题目

分析

当没有石头的时候,就用二分图匹配来做。
但现在加入了石头,
所以,求出每行和每列联通快的个数,如果有一块平地,包括在某个行联通块以及某个列联通块中,连边。

//无聊打了网络流,匈牙利也可以
#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】游戏相关推荐

  1. 【Tjoi2016Heoi2016】【BZOJ 4554】【JZOJ 4612】游戏

    Description 在2016年,佳缘姐姐喜欢上了一款游戏,叫做泡泡堂.简单的说,这个游戏就是在一张地图上放上若干个炸弹,看 是否能炸到对手,或者躲开对手的炸弹.在玩游戏的过程中,小H想到了这样一 ...

  2. 【程序12】模拟掷骰子游戏

    /*[程序12] * 实例:模拟掷骰子游戏 * 由用户输入骰子数量和参赛人数,然后由计算机随机生成每一粒骰子的数量, * 再累加起来就得到每一个选手的总点数. */ import java.util. ...

  3. C语言模拟回合制游戏 源码

    源码下载地址: http://download.csdn.net/detail/monkey_uan/5115921 刚学C的作品,略带稚气,仅供参考学习,版权所有. #include<stdi ...

  4. 在Touch Bar上模拟吃豆豆游戏你想试试吗?

    Pac-Bar for mac是一个macOS应用,可在Touch Bar上模拟吃豆豆游戏.经典的街机体验轻松触手可及,玩转Touch Bar,你还等什么! Pac-Bar安装教程 下载软件完成后,打 ...

  5. 编写程序模拟掷骰子游戏。已知掷骰子游戏的游戏规则为:每个骰子有6面,这些面包含1、2、3、4、5、6个点,掷两枚骰子之后,计算点数之和。

    编写程序模拟掷骰子游戏.已知掷骰子游戏的游戏规则为:每个骰子有6面,这些面包含1.2.3.4.5.6个点,掷两枚骰子之后,计算点数之和.如果第一次掷的点数和为7或11,则游戏者获胜:如果第一次掷的点数 ...

  6. 以太大亨 以太坊上的区块链模拟经营类游戏

    以太大亨 是一款以太坊上的区块链模拟经营类游戏,玩家通过建造店铺,管理人才等方式来打造属于自己的商业帝国.以太大亨将采用游戏内置钱包,让游戏体验更爽快,同时将支持多种数字货币,并且同时开放PC端,IO ...

  7. C语言实现小游戏——模拟微信小游戏《最强飞刀手》

    C语言实现小游戏--模拟微信小游戏<最强飞刀手> 曾经玩过的微信小游戏,想着用C语言实现,只可惜,下图是我的上限. 这个下游戏界面简陋,把旋转的西瓜做成了平的接盘:实现的功能有:接盘的移动 ...

  8. java 模拟保皇游戏开始的发牌过程

    模拟保皇游戏开始的发牌过程.规则:4副扑克,5个玩家.1)有一个大王标记为皇上.每次发牌时,所发牌中有该大王的玩家是皇上.2)皇帝选择侍卫(也叫保儿.腿子,游戏过程中与皇帝一伙):作为皇上的玩家从自己 ...

  9. 集合的应用-模拟保皇游戏发牌

    问题描述 模拟保皇游戏开始的发牌过程.规则:4副扑克,5个玩家.1)有一个大王标记为皇上.每次发牌时,所发牌中有该大王的玩家是皇上.2)皇帝选择侍卫(也叫保儿.腿子,游戏过程中与皇帝一伙):作为皇上的 ...

  10. Cisco PT模拟实验(12) 路由器静态路由的配置

    Cisco PT模拟实验(12) 路由器静态路由的配置 实验目的: 掌握静态路由的配置方法和应用 掌握路由选择表中的路由描述 熟悉路由选择和分组转发的原理及过程 实验背景: 某公司除总部外,另有一处分 ...

最新文章

  1. 一篇文章带你详解 HTTP 协议之报文首部及字段详解(中)
  2. xgboost学习率不能大于1的原因
  3. linux为用户添加sudo权限
  4. [NOI 2017]整数
  5. java中j 和 j啥区别_从字节码层次分析++j和j++的区别
  6. android手机分享app,Android Pie如何快捷分享文件至特定App
  7. python实现高精度加法_蓝桥杯-Python-高精度加法
  8. 关于if...else语句的小注意
  9. ubuntu 14.04 安装惠普打印机驱动(测试成功)
  10. windows10 LTSC转换成pro
  11. 2019腾讯算法广告大赛冠军方案复现遇到的问题 python
  12. 漏刻有时云守护数据可视化画质感知状态迭代说明文档
  13. putty连接虚拟机服务器,SSH:putty通过SSH连接固定IP的虚拟机
  14. 手机不用root,一台电脑教你导出微信聊天记录
  15. UVA1665 Islands (并查集)
  16. ANTMINER KA3 波卡链Polkadot绝对王者
  17. Java Bean Validation 详解
  18. ScrollBar ScrollWindow
  19. ORC提取图片中文字
  20. 详解 WebRTC 传输安全机制:一文读懂 DTLS 协议

热门文章

  1. 玄幻:我!收徒就变强!(三)
  2. excel交互式图表
  3. 举个栗子!Tableau技巧(61):学做三个集合的维恩图(文氏图)Venn diagram
  4. 弯头lisp_管道材料代号说明
  5. 转:软件开发的葵花宝典
  6. 我谈 Markdown
  7. 应用程序开发选择工具应注重运行效率还是易用性
  8. xss.haozi.me解题记录
  9. WebRTC 系列2--双摄像头同时预览
  10. C# UDP Socket ReceiveFrom 远程主机强迫关闭了一个现有的连接。