P1971 [NOI2011]兔兔与蛋蛋游戏
思路比较迷……题解在这里
//minamoto
#include<bits/stdc++.h>
#define R register
#define fp(i,a,b) for(R int i=a,I=b+1;i<I;++i)
#define fd(i,a,b) for(R int i=a,I=b-1;i>I;--i)
#define go(u) for(int i=head[u],v=e[i].v;i;i=e[i].nx,v=e[i].v)
using namespace std;
int read(){
R int res,f=1;R char ch;
while((ch=getchar())>'9'||ch<'0')(ch=='-')&&(f=-1);
for(res=ch-'0';(ch=getchar())>='0'&&ch<='9';res=res*10+ch-'0');
return res*f;
}
const int N=105,M=10005;
const int dx[]={1,0,-1,0},dy[]={0,1,0,-1};
struct eg{int v,nx;}e[M];int head[M],tot;
inline void add(R int u,R int v){e[++tot]={v,head[u]},head[u]=tot;}
int id[N][N],vis[M],st[M],match[M];bool ban[M],win[M],mp[N][N];
int n,m,tim,top,cnt,q,bx,by;char s[N];
bool find(int u){
if(ban[u])return 0;go(u){
if(vis[v]==tim||ban[v])continue;
vis[v]=tim;if(!match[v]||find(match[v])){
match[u]=v,match[v]=u;return 1;
}
}return 0;
}
int main(){
// freopen("testdata.in","r",stdin);
n=read(),m=read();
fp(i,1,n){
scanf("%s",s+1);
fp(j,1,m)switch(s[j]){
case 'X':mp[i][j]=1;break;
case 'O':mp[i][j]=0;break;
case '.':mp[i][j]=1,bx=i,by=j;break;
}
}fp(i,1,n)fp(j,1,m)id[i][j]=++cnt;
fp(i,1,n)fp(j,1,m)if(mp[i][j])fp(k,0,3){
int x=i+dx[k],y=j+dy[k];
if(x>=1&&x<=n&&y>=1&&y<=m&&!mp[x][y])add(id[i][j],id[x][y]),add(id[x][y],id[i][j]);
}fp(i,1,n)fp(j,1,m)if(mp[i][j])++tim,find(id[i][j]);
q=read();fp(i,1,(q<<1)){
int x=id[bx][by];ban[x]=1;
if(match[x]){
int y=match[x];match[x]=match[y]=0;
++tim,win[i]=!find(y);
}bx=read(),by=read();
}
fp(i,1,q)if(win[(i<<1)-1]&&(win[i<<1]))st[++top]=i;
printf("%d\n",top);fp(i,1,top)printf("%d\n",st[i]);
return 0;
}
P1971 [NOI2011]兔兔与蛋蛋游戏的更多相关文章
- NOI2011真题:兔兔与蛋蛋游戏
NOI2011真题:兔兔与蛋蛋游戏 题目描述 这些天,兔兔和蛋蛋喜欢上了一种新的棋类游戏. 这个游戏是在一个 n行 m 列的棋盘上进行的.游戏开始之前,棋盘上有一个格子是空的,其它的格子中都放置了一枚 ...
- NOI2011 兔兔与蛋蛋游戏
http://www.lydsy.com/JudgeOnline/problem.php?id=2437 这道题真是极好的. 75分做法: 搜索. 出题人真的挺良心的,前15个数据点的范围都很小,可以 ...
- 【BZOJ 2437】 2437: [Noi2011]兔兔与蛋蛋 (博弈+二分图匹配**)
未经博主同意不得转载 2437: [Noi2011]兔兔与蛋蛋 Time Limit: 10 Sec Memory Limit: 128 MBSubmit: 693 Solved: 442 Des ...
- 2437: [Noi2011]兔兔与蛋蛋 - BZOJ
Description Input 输入的第一行包含两个正整数 n.m.接下来 n行描述初始棋盘.其中第i 行包含 m个字符,每个字符都是大写英文字母"X".大写英文字母" ...
- 博弈论(二分图匹配):NOI 2011 兔兔与蛋蛋游戏
Description Input 输入的第一行包含两个正整数 n.m. 接下来 n行描述初始棋盘.其中第i 行包含 m个字符,每个字符都是大写英文字母"X".大写英文字母&quo ...
- 【BZOJ2437】【NOI2011】兔兔与蛋蛋(博弈论,二分图匹配)
[BZOJ2437][NOI2011]兔兔与蛋蛋(博弈论,二分图匹配) 题面 BZOJ 题解 考虑一下暴力吧. 对于每个状态,无非就是要考虑它是否是必胜状态 这个直接用\(dfs\)爆搜即可. 这样子 ...
- 【bzoj2437】[Noi2011]兔兔与蛋蛋 二分图最大匹配+博弈论
Description Input 输入的第一行包含两个正整数 n.m. 接下来 n行描述初始棋盘.其中第i 行包含 m个字符,每个字符都是大写英文字母"X".大写英文字母&quo ...
- bzoj 2437[Noi2011]兔兔与蛋蛋 黑白染色二分图+博弈+匈牙利新姿势
noi2011 兔兔与蛋蛋 题目大意 直接看原题吧 就是\(n*m\)的格子上有一些白棋和一些黑棋和唯一一个空格 兔兔先手,蛋蛋后手 兔兔要把与空格相邻的其中一个白棋移到空格里 蛋蛋要把与空格相邻的其 ...
- 【BZOJ2432】【NOI2011】兔农(数论,矩阵快速幂)
[BZOJ2432][NOI2011]兔农(数论,矩阵快速幂) 题面 BZOJ 题解 这题\(75\)分就是送的,我什么都不想写. 先手玩一下,发现每次每次出现\(mod\ K=1\)的数之后 把它减 ...
随机推荐
- 设置select的默认选项
2014-01-07 09:54:34| 通过后台传出的值进行选择默认项的设置 <select name="user_id" id="user_id" ...
- Max Sum Plus Plus-HDU1024(dp)
Problem Description Now I think you have got an AC in Ignatius.L's "Max Sum" problem. To b ...
- Mysql 数据库允许远程连接 服务器连接错误 Host 'XXX' is not allowed to connect to this MySQL server
如果连接数据库的时候出现这个问题 Host 'XXX' is not allowed to connect to this MySQL server 说明 Mysql数据库 不允许远程连接, 需要修改 ...
- Spring MVC中 log4j日志文件配置相对路径
log4j和web.xml配置webAppRootKey 的问题 1 在web.xml配置 <context-param> <param-name>webAppRootKey ...
- IO与文件读写---Java的IO流架构
http://www.blogjava.net/pengpenglin/archive/2010/03/03/314239.html#314399 http://www.blogjava.net/jo ...
- 30分钟学会如何使用Shiro(转)
本文转自http://www.cnblogs.com/learnhow/p/5694876.html 感谢作者 本篇内容大多总结自张开涛的<跟我学Shiro>原文地址:http://jin ...
- Javascript setTimeout(0),闭包
setTimeout常常被用于延迟运行某个函数,使用方法为 setTimeout(function(){ - }, timeout); 有时为了进行异步处理,而使用setTimeout(functio ...
- [Bash] Find Files and Folders with `find` in Bash
find is a powerful tool that can not only find files but it can run a command on each matching file ...
- android多个fragment返回键层层返回
在FragmentActivity的fragment跳转的时候加入到执行栈. public void switchFrag(BaseFragment to) { getSupportFragmentM ...
- 猫猫学iOS 之微博项目实战(2)微博主框架-自己定义导航控制器NavigationController
猫猫分享,必须精品 原创文章,欢迎转载.转载请注明:翟乃玉的博客 地址:http://blog.csdn.net/u013357243?viewmode=contents 一:加入导航控制器 上一篇博 ...