bzoj4554: [Tjoi2016&Heoi2016]游戏(二分图匹配)
4554: [Tjoi2016&Heoi2016]游戏
题目:传送门
题解:
一道很牛逼的匈牙利。。和之前模拟赛的一道题有点相似(不过这题不用完美匹配)
我们可以把连续的行和列全部编号(如果之间没有#就归为同一编号)
很容易就可以证明,编号后的行和列只能匹配一次,跑一下找母牛就ok(数组开小的我没有一A很难受)
强烈吐槽:数据开头和结尾的字符串不用输入(cnmmmmmmmm!!!!)
但是做完这题还是很兴奋的,哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈终于超过苏大佬了哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈
代码:
#include<cstdio>
#include<cstring>
#include<cstdlib>
#include<cmath>
#include<algorithm>
using namespace std;
struct node
{
int x,y,next;
}a[];int len,last[];
void ins(int x,int y)
{
len++;
a[len].x=x;a[len].y=y;
a[len].next=last[x];last[x]=len;
}
int match[],chw[],t;
int find_muniu(int x)
{
for(int k=last[x];k;k=a[k].next)
{
int y=a[k].y;
if(chw[y]!=t)
{
chw[y]=t;
if(match[y]== || find_muniu(match[y]))
{
match[y]=x;
return true;
}
}
}
return false;
}
char st[][],s[];
int belong1[][],belong2[][];
int n,m;
int main()
{
freopen("ans.in","r",stdin);
freopen("ans.out","w",stdout);
//scanf("%s",s+1);
scanf("%d%d",&n,&m);
for(int i=;i<=n;i++)scanf("%s",st[i]+);
//scanf("%s",s+1);
int H=,L=;
for(int i=;i<=n;i++)
{
H++;int k=;
while(st[i][k]!='*' && k<=m)k++;
for(int j=k;j<=m;j++)
{
if(st[i][j]=='#')H++;
if(st[i][j]=='*')belong1[i][j]=H;
}
}
L=H;
for(int j=;j<=m;j++)
{
L++;int k=;
while(st[k][j]!='*' && k<=n)k++;
for(int i=k;i<=n;i++)
{
if(st[i][j]=='#')L++;
if(st[i][j]=='*')belong2[i][j]=L;
}
}
for(int i=;i<=n;i++)
for(int j=;j<=m;j++)
if(st[i][j]=='*')
ins(belong1[i][j],belong2[i][j]);
memset(chw,,sizeof(chw));memset(match,,sizeof(match));
int ans=;
for(int i=;i<=H;i++)
{
t=i;if(find_muniu(i))ans++;
}
printf("%d\n",ans);
return ;
}
bzoj4554: [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 ...
- 4554: [Tjoi2016&Heoi2016]游戏 二分图匹配
题目链接: http://www.lydsy.com/JudgeOnline/problem.php?id=4554 题解: 如果没有硬石头的话,就是’*‘点对应的行列建边,然后跑最大匹配 硬石头什么 ...
- 【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: [Tjoi2016&Heoi2016]游戏
Description 在2016年,佳缘姐姐喜欢上了一款游戏,叫做泡泡堂.简单的说,这个游戏就是在一张地图上放上若干个炸弹,看 是否能炸到对手,或者躲开对手的炸弹.在玩游戏的过程中,小H想到了这样一 ...
- BZOJ 4554 [Tjoi2016&Heoi2016]游戏 ——二分图
出原题,直接二分图匹配即可. #include <cstdio> #include <vector> #include <cstring> using namesp ...
- BZOJ4554: [Tjoi2016&Heoi2016]游戏 luoguP2825 loj2057
题面描述:尽可能多的放置符合要求的炸弹. 分析: 在i,j处放置炸弹,则在第i行,上一个硬石头之后,下一个硬石头之前,第j列,上一个硬石头之后,下一个硬石头之前,不能再次放置炸弹. 首先,这个题,一看 ...
随机推荐
- windows命令行方式下打印和设置PATH变量
点击开始菜单,运行=>cmd打印当前变量:echo %PATH%结果:C:\WINDOWS\system32;C:\WINDOWS;C:\WINDOWS\System32\Wbem;d:\PRO ...
- 光标属性CSS cursor 属性
CSS cursor 属性 CSS cursor属性,以前不知道,如果以后用到自己看的 <html> <body> <p>请把鼠标移动到单词上,可以看到鼠标指针发生 ...
- CentOS 7 安装 vmware tools 提示The path "" is not a valid path to the 3.10.0-957.el7.x86_64 kernel headers.
输入“mkdir /mnt/cdrom”在/mnt目录下新建一个名为cdrom的文件夹 mkdir /mnt/cdrom 输入“mount -t iso9660 /dev/cdrom /mnt/cdr ...
- windows下安装ImageMagick扩展
最近项目中需要用到图片的一些特殊处理——比如:根据用户请求生成任意尺寸的图像.经过一些资料的查找,最终选用了php_imagick.利用 ImageMagick,你可以根据web应用程序的需要动态生成 ...
- 微信小程序面试题
小程序与原生App哪个好? 答: 小程序除了拥有公众号的低开发成本.低获客成本低以及无需下载等优势,在服务请求延时与用户使用体验是都得到了较大幅度 的提升,使得其能够承载跟复杂的服务功能以及使用户获 ...
- POJ 3624 Charm Bracelet【01背包】
解题思路:直接套公式就能做的01背包, for(i=1;i<=n;i++) { for(v=w[i];v<=m;v++) f[i,v]=max(f[i,v],f[i-1,v-w[i]]+d ...
- gcc编译c中有与lua交互的代码
编译C程序中有与Lua有关的程序(编译环境是Linux系统,lua解释器是luajit)gcc -o test30 test30.cpp -I/usr/local/include/luajit-2.0 ...
- Image解码
Image解码 可以看到从CFDataRef直到创建出UIImage,都没有调用过对图像解码的函数,只读取了一些图像基础数据和元数据. Image解码发生在什么时候?在ImageIO/CGImageS ...
- 基础——(4)SR Latch(SR锁存器)
Digital logic gets really interesting when we connect the output of gates back to an input. The SR l ...
- Cookie和Session有什么区别
1. 由于HTTP协议是无状态的协议,所以服务端需要记录用户的状态时,就需要用某种机制来识别具体的用户,这个机制就是Session. 典型的场景比如购物车,当你点击下单按钮时,由于HTTP协议无状 ...