BZOJ_4554_[Tjoi2016&Heoi2016]游戏_二分图匹配
BZOJ_4554_[Tjoi2016&Heoi2016]游戏_二分图匹配
Description
Input
Output
输出一个整数a,表示最多能放置炸弹的个数
Sample Input
4 4
#***
*#**
**#*
xxx#
```
Sample Output
#include <stdio.h>
#include <string.h>
#include <algorithm>
using namespace std;
#define N 55000
#define M 1000050
int n,m;
int vis[N],match[N],head[N],to[M],nxt[M],cnt,tot,hang[60][60],lie[60][60];
char mp[60][60];
struct node {
int type,v,l,r;
}a[N];
inline void add(int u,int v) {
to[++cnt]=v; nxt[cnt]=head[u]; head[u]=cnt;
}
bool dfs(int x) {
int i;
for(i=head[x];i;i=nxt[i]) {
if(!vis[to[i]]) {
vis[to[i]]=1;
if(!match[to[i]]||dfs(match[to[i]])) {
match[to[i]]=x; return 1;
}
}
}
return 0;
}
int main() {
//freopen("game.in","r",stdin);
//freopen("game.out","w",stdout);
scanf("%d%d",&n,&m);
int i,j,lst,k;
for(i=1;i<=n;i++) {
scanf("%s",mp[i]+1);
}
for(i=1;i<=n;i++) {
lst=1;
for(j=1;j<=m;j++) {
if(mp[i][j]=='#') {
if(j!=1&&lst<=j-1) {
a[++tot]=(node){0,i,lst,j-1};
for(k=lst;k<j;k++) hang[i][k]=tot;
}
lst=j+1;
}
}
if(lst<=m) {
a[++tot]=(node){1,i,lst,n};
for(j=lst;j<=n;j++) hang[i][j]=tot;
}
}
int tmp=tot;
for(i=1;i<=m;i++) {
lst=1;
for(j=1;j<=n;j++) {
if(mp[j][i]=='#') {
if(j!=1&&lst<=j-1) {
a[++tot]=(node){1,i,lst,j-1};
for(k=lst;k<j;k++) lie[k][i]=tot;
}
lst=j+1;
}
}
if(lst<=n) {
a[++tot]=(node){1,i,lst,n};
for(j=lst;j<=n;j++) lie[j][i]=tot;
}
}
for(i=1;i<=n;i++) {
for(j=1;j<=m;j++) {
if(mp[i][j]=='*') {
int x=hang[i][j],y=lie[i][j];
add(x,y); add(y,x);
}
}
}
int ans=0;
for(i=1;i<=tmp;i++) {
memset(vis,0,sizeof(vis));
if(dfs(i)) ans++;
}
printf("%d\n",ans);
}
BZOJ_4554_[Tjoi2016&Heoi2016]游戏_二分图匹配的更多相关文章
- bzoj4554: [Tjoi2016&Heoi2016]游戏(二分图匹配)
4554: [Tjoi2016&Heoi2016]游戏 题目:传送门 题解: 一道很牛逼的匈牙利..和之前模拟赛的一道题有点相似(不过这题不用完美匹配) 我们可以把连续的行和列全部编号(如果之 ...
- bzoj4554: [Tjoi2016&Heoi2016]游戏 二分图匹配
4554: [Tjoi2016&Heoi2016]游戏 Description 在2016年,佳缘姐姐喜欢上了一款游戏,叫做泡泡堂.简单的说,这个游戏就是在一张地图上放上若干个炸弹,看 是否能 ...
- BZOJ 4554: [Tjoi2016&Heoi2016]游戏 二分图匹配
4554: [Tjoi2016&Heoi2016]游戏 题目连接: http://www.lydsy.com/JudgeOnline/problem.php?id=4554 Descripti ...
- 【BZOJ4554】[Tjoi2016&Heoi2016]游戏 二分图最大匹配
[BZOJ4554][Tjoi2016&Heoi2016]游戏 Description 在2016年,佳缘姐姐喜欢上了一款游戏,叫做泡泡堂.简单的说,这个游戏就是在一张地图上放上若干个炸弹,看 ...
- BZOJ4554 - [TJOI2016&HEOI2016]游戏
原题链接 Description 给出一个的地图,地图上有空地.软石头和硬石头.求在这张地图上最多能放上多少个炸弹能使得任意两个炸弹之间不会互相炸到.炸弹能炸到的范围是该炸弹所在的一行和一列,炸弹的威 ...
- [BZOJ4554][TJOI2016&&HEOI2016]游戏(匈牙利)
4554: [Tjoi2016&Heoi2016]游戏 Time Limit: 20 Sec Memory Limit: 128 MBSubmit: 857 Solved: 506[Sub ...
- 【BZOJ4554】游戏(二分图匹配,网络流)
[BZOJ4554]游戏(二分图匹配,网络流) 题解 Description 在2016年,佳缘姐姐喜欢上了一款游戏,叫做泡泡堂.简单的说,这个游戏就是在一张地图上放上若干个炸弹,看 是否能炸到对手, ...
- BZOJ_1433_[ZJOI2009]假期的宿舍_二分图匹配
BZOJ_1433_[ZJOI2009]假期的宿舍_二分图匹配 题意: 学校放假了······有些同学回家了,而有些同学则有以前的好朋友来探访,那么住宿就是一个问题.比如A 和B都是学校的学生,A要回 ...
- luoguP2526_[SHOI2001]小狗散步_二分图匹配
luoguP2526_[SHOI2001]小狗散步_二分图匹配 题意: Grant喜欢带着他的小狗Pandog散步.Grant以一定的速度沿着固定路线走,该路线可能自交.Pandog喜欢游览沿途的景点 ...
随机推荐
- springboot2 webflux 响应式编程学习路径
springboot2 已经发布,其中最亮眼的非webflux响应式编程莫属了!响应式的weblfux可以支持高吞吐量,意味着使用相同的资源可以处理更加多的请求,毫无疑问将会成为未来技术的趋势,是必学 ...
- 我对Spring的理解。
1.Spring实现了工厂模式的工厂类(在这里有必要解释清楚什么是工厂模式),这个类名为BeanFactory(实际上是一个接口),在程序中通常BeanFactory的子类ApplicationCon ...
- 使用AngularJS开发中的几个问题
1.AngularJS的模板绑定机制好像和其$http服务也有一定关系,如果用jQuery Ajax的返回值赋给$scope的作用域变量,整个绑定显示的节奏慢一个事件,神器果然麻烦啊. 2.对hidd ...
- C#学习笔记 day_two
C#学习笔记 day two Chapter 2 c#基本概念 2.1编译与运行hello world应用程序 点击f5或者vs2010中的运行图标即可 2.3C#的概念拓展 (1)继承性:一个类含有 ...
- NewLife.Net——网络压测单机1.88亿tps
NewLife.Net压力测试,峰值4.2Gbps,50万pps,消息大小24字节,消息处理速度1.88亿tps! 共集合20台高配ECS参与测试,主服务器带宽6Gbps.100万pps,16核心64 ...
- LocalDB + IIS
Win7 + IIS7 1. 安装 (1)LocalDB SQL Express 2012 选中:ENU\x64\SqlLocalDB.MSI (2).net4.5 .net4.5 然后,再配置IIS ...
- lintcode 在O(1)时间复杂度删除链表节点
题目要求 给定一个单链表中的一个等待被删除的节点(非表头或表尾).请在在O(1)时间复杂度删除该链表节点. 样例 Linked list is 1->2->3->4, and giv ...
- meta的用法
META标签,是HTML语言head区的一个辅助性标签.在几乎所有的page里,我们都可以看 到类似下面这段html代码: -------------------------------------- ...
- Go 语言集成开发环境 GoLand 更新至 2018.1.3 版本
GoLand 2018.1.3 已发布,这是一个全新的更新,尽管没有带来明显的针对 Go 语言的特定改进,但还是提供了许多与 UI,JavaScript 和 SQL 支持相关的错误修复和改进. 可通过 ...
- 设计模式的征途—17.模板方法(Template Method)模式
在现实生活中,很多事情都需要经过几个步骤才能完成,例如请客吃饭,无论吃什么,一般都包含:点单.吃东西.买单等几个步骤,通常情况下这几个步骤的次序是:点单=>吃东西=>买单.在这3个步骤中, ...