【bzoj 4554】【Tjoi2016Heoi2016】【NOIP2016模拟7.12】游戏
题目
分析
当没有石头的时候,就用二分图匹配来做。
但现在加入了石头,
所以,求出每行和每列联通快的个数,如果有一块平地,包括在某个行联通块以及某个列联通块中,连边。
//无聊打了网络流,匈牙利也可以
#include <cmath>
#include <iostream>
#include <cstdio>
#include <cstdlib>
#include <cstring>
#include <algorithm>
#include <queue>
const int maxlongint=2147483647;
const int mo=1000000007;
const int N=54;
using namespace std;
int n,m,a[N][N],ans,tot,f[N*N+6][N*N+6],id,v[N*N+6],t;
int b[N][N];
int aug(int x,int y)
{if(x==n*m+n) return y;v[x]=id;for(int i=0;i<=n*m+n;i++){if(f[x][i] && v[i]<id){int o=aug(i,min(y,f[x][i]));if(o){f[x][i]-=o;f[i][x]+=o;return o;}}}return 0;
}
int main()
{scanf("%d%d",&n,&m);tot=0;for(int i=1;i<=n;i++){tot++;for(int j=1;j<=m;j++){char c;c=getchar();while(c!='*' && c!='x' && c!='#') c=getchar();if(c=='*') a[i][j]=1;elseif(c=='x') a[i][j]=2;elsea[i][j]=3;if(a[i][j]==3 && a[i][j-1]!=3) tot++;else{f[0][tot]=1;b[i][j]=tot;}}}for(int i=1;i<=m;i++){tot++;for(int j=1;j<=n;j++){if(a[j][i]==3) tot++;else{if(a[j][i]!=2) f[b[j][i]][tot]=1;f[tot][n*m+n]=1;}}}t=1;while(t){id++;t=aug(0,maxlongint);ans+=t; }printf("%d",ans);
}
转载于:https://www.cnblogs.com/chen1352/p/9013498.html
【bzoj 4554】【Tjoi2016Heoi2016】【NOIP2016模拟7.12】游戏相关推荐
- 【Tjoi2016Heoi2016】【BZOJ 4554】【JZOJ 4612】游戏
Description 在2016年,佳缘姐姐喜欢上了一款游戏,叫做泡泡堂.简单的说,这个游戏就是在一张地图上放上若干个炸弹,看 是否能炸到对手,或者躲开对手的炸弹.在玩游戏的过程中,小H想到了这样一 ...
- 【程序12】模拟掷骰子游戏
/*[程序12] * 实例:模拟掷骰子游戏 * 由用户输入骰子数量和参赛人数,然后由计算机随机生成每一粒骰子的数量, * 再累加起来就得到每一个选手的总点数. */ import java.util. ...
- C语言模拟回合制游戏 源码
源码下载地址: http://download.csdn.net/detail/monkey_uan/5115921 刚学C的作品,略带稚气,仅供参考学习,版权所有. #include<stdi ...
- 在Touch Bar上模拟吃豆豆游戏你想试试吗?
Pac-Bar for mac是一个macOS应用,可在Touch Bar上模拟吃豆豆游戏.经典的街机体验轻松触手可及,玩转Touch Bar,你还等什么! Pac-Bar安装教程 下载软件完成后,打 ...
- 编写程序模拟掷骰子游戏。已知掷骰子游戏的游戏规则为:每个骰子有6面,这些面包含1、2、3、4、5、6个点,掷两枚骰子之后,计算点数之和。
编写程序模拟掷骰子游戏.已知掷骰子游戏的游戏规则为:每个骰子有6面,这些面包含1.2.3.4.5.6个点,掷两枚骰子之后,计算点数之和.如果第一次掷的点数和为7或11,则游戏者获胜:如果第一次掷的点数 ...
- 以太大亨 以太坊上的区块链模拟经营类游戏
以太大亨 是一款以太坊上的区块链模拟经营类游戏,玩家通过建造店铺,管理人才等方式来打造属于自己的商业帝国.以太大亨将采用游戏内置钱包,让游戏体验更爽快,同时将支持多种数字货币,并且同时开放PC端,IO ...
- C语言实现小游戏——模拟微信小游戏《最强飞刀手》
C语言实现小游戏--模拟微信小游戏<最强飞刀手> 曾经玩过的微信小游戏,想着用C语言实现,只可惜,下图是我的上限. 这个下游戏界面简陋,把旋转的西瓜做成了平的接盘:实现的功能有:接盘的移动 ...
- java 模拟保皇游戏开始的发牌过程
模拟保皇游戏开始的发牌过程.规则:4副扑克,5个玩家.1)有一个大王标记为皇上.每次发牌时,所发牌中有该大王的玩家是皇上.2)皇帝选择侍卫(也叫保儿.腿子,游戏过程中与皇帝一伙):作为皇上的玩家从自己 ...
- 集合的应用-模拟保皇游戏发牌
问题描述 模拟保皇游戏开始的发牌过程.规则:4副扑克,5个玩家.1)有一个大王标记为皇上.每次发牌时,所发牌中有该大王的玩家是皇上.2)皇帝选择侍卫(也叫保儿.腿子,游戏过程中与皇帝一伙):作为皇上的 ...
- Cisco PT模拟实验(12) 路由器静态路由的配置
Cisco PT模拟实验(12) 路由器静态路由的配置 实验目的: 掌握静态路由的配置方法和应用 掌握路由选择表中的路由描述 熟悉路由选择和分组转发的原理及过程 实验背景: 某公司除总部外,另有一处分 ...
最新文章
- 一篇文章带你详解 HTTP 协议之报文首部及字段详解(中)
- xgboost学习率不能大于1的原因
- linux为用户添加sudo权限
- [NOI 2017]整数
- java中j 和 j啥区别_从字节码层次分析++j和j++的区别
- android手机分享app,Android Pie如何快捷分享文件至特定App
- python实现高精度加法_蓝桥杯-Python-高精度加法
- 关于if...else语句的小注意
- ubuntu 14.04 安装惠普打印机驱动(测试成功)
- windows10 LTSC转换成pro
- 2019腾讯算法广告大赛冠军方案复现遇到的问题 python
- 漏刻有时云守护数据可视化画质感知状态迭代说明文档
- putty连接虚拟机服务器,SSH:putty通过SSH连接固定IP的虚拟机
- 手机不用root,一台电脑教你导出微信聊天记录
- UVA1665 Islands (并查集)
- ANTMINER KA3 波卡链Polkadot绝对王者
- Java Bean Validation 详解
- ScrollBar ScrollWindow
- ORC提取图片中文字
- 详解 WebRTC 传输安全机制:一文读懂 DTLS 协议