bzoj4554【TJOI2016HEOI2016】游戏
4554: [Tjoi2016&Heoi2016]游戏
Time Limit: 20 Sec Memory Limit: 128 MB
Submit: 266 Solved: 167
[ Submit][ Status][ Discuss]
Description
Input
Output
输出一个整数a,表示最多能放置炸弹的个数
Sample Input
#∗∗∗
∗#∗∗
∗∗#∗
xxx#
Sample Output
二分图最大匹配
如果没有硬石头,是一个很经典的二分图模型,对于每一个空地(x,y),连边x→y,然后计算最大匹配即为答案。
考虑硬石头的影响,相当于将一行拆成了几个互不干扰的部分,所以我们将一行拆分成几个部分,分别对应不同的编号,然后建图算最大匹配。
#include<iostream>
#include<cstdio>
#include<cmath>
#include<cstring>
#include<cstdlib>
#include<algorithm>
#define F(i,j,n) for(int i=j;i<=n;i++)
#define D(i,j,n) for(int i=j;i>=n;i--)
#define ll long long
#define N 55
#define M 3000
using namespace std;
int n,m,nx,ny,ans,cnt;
int x[N][N],y[N][N],head[M],f[M];
char s[N][N];
bool vst[M];
struct edge{int next,to;}e[M];
inline void add_edge(int x,int y)
{e[++cnt]=(edge){head[x],y};head[x]=cnt;
}
bool dfs(int x)
{for(int i=head[x];i;i=e[i].next){int y=e[i].to;if (vst[y]) continue;vst[y]=1;if (!f[y]||dfs(f[y])){f[y]=x;return true;}}return false;
}
int main()
{scanf("%d%d",&n,&m);F(i,1,n) scanf("%s",s[i]+1);F(i,1,n) F(j,1,m) x[i][j]=(j==1||s[i][j]=='#')?++nx:nx;F(j,1,m) F(i,1,n) y[i][j]=(i==1||s[i][j]=='#')?++ny:ny;F(i,1,n) F(j,1,m) if (s[i][j]=='*') add_edge(x[i][j],y[i][j]);F(i,1,nx){memset(vst,0,sizeof(vst));if (dfs(i)) ans++;}printf("%d\n",ans);return 0;
}
bzoj4554【TJOI2016HEOI2016】游戏相关推荐
- BZOJ4554 [Tjoi2016Heoi2016]游戏
假如没有硬石头的话就是对于每个能放炸弹的点(x,y)第x行连第y列,然后跑二分图最大匹配,有硬石头的话把一个炸弹横向和纵向能炸到的地方算一行和一列,然后和没有硬石头一样 #include<ios ...
- BZOJ P4554 [Tjoi2016Heoi2016]游戏
BZOJ P4554 [Tjoi2016&Heoi2016]游戏 题目 Description 在2016年,佳缘姐姐喜欢上了一款游戏,叫做泡泡堂.简单的说,这个游戏就是在一张地图上放上若干个 ...
- bzoj4554 [HEOI2016]游戏 二分匹配
这种限制+求最大方案的题不是网络流就是dp了 dp的话状压可解,但n>20. 首先状态压不下,其次状态的表示是不能通过枚举来记录的,限制条件是有可能精确到块的. 所以就必须考虑网络流,通过决策动 ...
- 辣鸡HellPix刷yyb网络流题单(orz yyb)
题目 评价 状态 [USACO4.2]草地排水Drainage Ditches(最大流) 最大流模板 Accepted HDU 3416 Marriage Match IV(最短路,网络流) 最小 ...
- 【Tjoi2016Heoi2016】【BZOJ 4554】【JZOJ 4612】游戏
Description 在2016年,佳缘姐姐喜欢上了一款游戏,叫做泡泡堂.简单的说,这个游戏就是在一张地图上放上若干个炸弹,看 是否能炸到对手,或者躲开对手的炸弹.在玩游戏的过程中,小H想到了这样一 ...
- 伍六七带你学算法 进阶篇-生命游戏
有趣的算法题–生命游戏 难度-中等 根据 百度百科 ,生命游戏,简称为生命,是英国数学家约翰·何顿·康威在 1970 年发明的细胞自动机. 想要体验生命游戏的小伙伴可以到这里-->生命游戏 进入 ...
- 自制青蛙跳台阶小游戏~
青蛙跳台阶小游戏 1.概念(concept)文档 楔子(Setting):千百年来,人们在贬低别人时,常用井底之蛙来描述那个人,但这却让青蛙不开心了,于是青蛙决定跳出井底,为自己讨一个公道. 玩法(G ...
- 用Construct 2制作入门小游戏~
今天在软导课上了解到了Construct 2这个神器,本零基础菜鸟决定尝试做一个简单的小游戏(实际上是入门的教程啊= = 首先呢,肯定是到官网下载软件啊,点击我下载~ 等安装完毕后我便按照新手教程开始 ...
- Intel GPU实现游戏与数据中心
Intel GPU实现游戏与数据中心 在Intel Architecture Day上,Intel谈到了面向游戏玩家的Xe-HPG架构Alchemist GPU以及面向数据中心的Xe-HPC架构GPU ...
最新文章
- 数据结构与算法——线性结构——线性表及其表示
- 全部与精简切换显示jQuery实例教程
- linux安装setup.py程序
- 马云不会因支付宝事件走下神坛
- Java集合---Arrays类源码解析
- 编程随想 关系图_IT什么岗位比较好找工作?一张金字塔图就能明白
- c语言sleep函数_做游戏,学C语言,小球碰撞游戏,菜鸡者从黑窗口到图形化编程...
- ajax 跨域 java_java+jQueryd的ajax跨域方法
- flash电脑安装包_一百余款电脑软件及安装方式,忍不住收藏起来
- linux系统打开m3u8文件,Linux下载m3u8流视频并合并ts文件
- HDFS之存储优化纠删码原理、纠删码案例实操 、异构存储(冷热数据分离)
- 无法复制文件到远程桌面的解决办法
- linux smtp ip伪造,邮箱伪造之搭建匿名SMTP服务器
- Winfrom控件的使用
- form-making爬坑笔记(jeecg项目替换表单设计器)
- 门禁卡怎么弄到手机上,手机变成门禁卡,手把手超详细(建议收藏)
- 使用scp传输文件给linux服务器,出现Permission denied(publickey) 的解决办法
- 静态文档,动态文档和活动文档
- JVM3:实战:内存分配与回收策略
- 详解AUTOSAR:AUTOSAR方法论(理论篇—3)