二分图博弈果然都是一个套路,必经点必胜,非必经点必败,

但是肯定不能每走一步就重新建图判断必胜还是必败,那么我们可以这样:每走一步就把这个点删掉,然后find他原来的匹配,如果找不到,就说明他是必经点,否则就是非必经点。

 #include <cstdio>
#include <cstring>
#include <iostream>
#include <algorithm>
#include <cmath>
#define N 1601
using namespace std;
int e=,head[N];
struct edge{int v,next;}ed[N*];
void add(int u,int v){ed[e].v=v;ed[e].next=head[u];head[u]=e++;}
int pp[N],del[N],id[][];
bool vis[N],ans[N];
bool find(int x){
for(int i=head[x];i;i=ed[i].next){
int v=ed[i].v;
if(del[v]||vis[v])continue;vis[v]=;
if(!pp[v]||find(pp[v])){
pp[v]=x;pp[x]=v;
return ;
}
}return ;
}
int a[][],be,n,m,T,sx,sy,tot1,tot2,tot;
char ch[];
bool check(int i,int j){return ((i+j)&)^a[i][j]==be;}
int f[N],f_cnt;
int main(){
scanf("%d%d",&n,&m);
for(int i=;i<=n;i++){
scanf("%s",ch+);
for(int j=;j<=m;j++)
if(ch[j]=='O')a[i][j]=;
else if(ch[j]=='X')a[i][j]=;
else sx=i,sy=j;
}
be=(sx+sy)&;
for(int i=;i<=n;i++)
for(int j=;j<=m;j++)if(check(i,j))
if(a[i][j])id[i][j]=++tot1;
else id[i][j]=++tot2;
for(int i=;i<=n;i++)
for(int j=;j<=m;j++)if(check(i,j)&&(!a[i][j]))
id[i][j]+=tot1;
tot=tot1+tot2;
for(int i=;i<=n;i++)
for(int j=;j<=m;j++)if(id[i][j]){
if(id[i+][j])add(id[i][j],id[i+][j]);
if(id[i][j+])add(id[i][j],id[i][j+]);
if(id[i-][j])add(id[i][j],id[i-][j]);
if(id[i][j-])add(id[i][j],id[i][j-]);
}
for(int i=;i<=tot1;i++){
memset(vis,,sizeof vis);
find(i);
}
scanf("%d",&T);T<<=;
for(int i=,x,y;i<=T;i++){
int now=id[sx][sy],p=pp[now];
del[now]=;pp[now]=pp[p]=;
if(!p)ans[i]=;
else{
memset(vis,,sizeof vis);
ans[i]=find(p)^;
}
scanf("%d%d",&sx,&sy);
}
for(int i=;i<=T;i+=)
if(ans[i]&&ans[i+])f[++f_cnt]=(i+)>>;
printf("%d\n",f_cnt);
for(int i=;i<=f_cnt;i++)
printf("%d\n",f[i]);
return ;
}

bzoj2437 [Noi2011]兔兔与蛋蛋的更多相关文章

  1. 【BZOJ2437】【NOI2011】兔兔与蛋蛋(博弈论,二分图匹配)

    [BZOJ2437][NOI2011]兔兔与蛋蛋(博弈论,二分图匹配) 题面 BZOJ 题解 考虑一下暴力吧. 对于每个状态,无非就是要考虑它是否是必胜状态 这个直接用\(dfs\)爆搜即可. 这样子 ...

  2. 【bzoj2437】[Noi2011]兔兔与蛋蛋 二分图最大匹配+博弈论

    Description Input 输入的第一行包含两个正整数 n.m. 接下来 n行描述初始棋盘.其中第i 行包含 m个字符,每个字符都是大写英文字母"X".大写英文字母&quo ...

  3. 【BZOJ 2437】 2437: [Noi2011]兔兔与蛋蛋 (博弈+二分图匹配**)

    未经博主同意不得转载 2437: [Noi2011]兔兔与蛋蛋 Time Limit: 10 Sec  Memory Limit: 128 MBSubmit: 693  Solved: 442 Des ...

  4. bzoj 2437[Noi2011]兔兔与蛋蛋 黑白染色二分图+博弈+匈牙利新姿势

    noi2011 兔兔与蛋蛋 题目大意 直接看原题吧 就是\(n*m\)的格子上有一些白棋和一些黑棋和唯一一个空格 兔兔先手,蛋蛋后手 兔兔要把与空格相邻的其中一个白棋移到空格里 蛋蛋要把与空格相邻的其 ...

  5. 2437: [Noi2011]兔兔与蛋蛋 - BZOJ

    Description Input 输入的第一行包含两个正整数 n.m.接下来 n行描述初始棋盘.其中第i 行包含 m个字符,每个字符都是大写英文字母"X".大写英文字母" ...

  6. NOI2011 兔兔与蛋蛋游戏

    http://www.lydsy.com/JudgeOnline/problem.php?id=2437 这道题真是极好的. 75分做法: 搜索. 出题人真的挺良心的,前15个数据点的范围都很小,可以 ...

  7. 博弈论(二分图匹配):NOI 2011 兔兔与蛋蛋游戏

    Description Input 输入的第一行包含两个正整数 n.m. 接下来 n行描述初始棋盘.其中第i 行包含 m个字符,每个字符都是大写英文字母"X".大写英文字母&quo ...

  8. 【BZOJ2432】【NOI2011】兔农(数论,矩阵快速幂)

    [BZOJ2432][NOI2011]兔农(数论,矩阵快速幂) 题面 BZOJ 题解 这题\(75\)分就是送的,我什么都不想写. 先手玩一下,发现每次每次出现\(mod\ K=1\)的数之后 把它减 ...

  9. BZOJ2437 [Noi2011]兔兔与蛋蛋 【博弈论 + 二分图匹配】

    题目链接 BZOJ2437 题解 和JSOI2014很像 只不过这题动态删点 如果我们把空位置看做\(X\)的话,就会发现我们走的路径是一个\(OX\)交错的路径 然后将图二分染色,当前点必胜,当且仅 ...

  10. BZOJ2437 NOI2011兔兔与蛋蛋(二分图匹配+博弈)

    首先将棋盘黑白染色,不妨令空格处为黑色.那么移动奇数次后空格一定处于白色格子,偶数次后空格一定处于黑色格子.所以若有某个格子的棋子颜色与棋盘颜色不同,这个棋子就是没有用的.并且空格与某棋子交换后,棋子 ...

随机推荐

  1. IT轮子系列(六)——Excel上传与解析,一套代码解决所有Excel业务上传,你Get到了吗

    前言 在日常开发当中,excel的上传与解析是很常见的.根据业务不同,解析的数据模型也都不一样.不同的数据模型也就需要不同的校验逻辑,这往往需要写多套的代码进行字段的检验,如必填项,数据格式.为了避免 ...

  2. 《MySQL必知必会》学习笔记_1

    #选择数据库 USE mysql #返回可用数据库列表 SHOW DATABASES #返回当前数据库中可用表 SHOW TABLES #返回表列 SHOW COLUMNS FROM db #显示特定 ...

  3. Vue 仿B站滑动导航

    仿照B站制作的滑动导航功能,进行了部分优化,例如可定制默认选中元素,并将选中元素居中显示,可动态更改数据,可定制回调函数取的下标和选中元素内容,可根据需求制作N级联动 已开发成插件,使用方法与源码请前 ...

  4. FFPLAY的原理(五)

    创建线程 Spawning Threads Overview Last time we added audio support by taking advantage of SDL's audio f ...

  5. Angular TypeScript开发环境集成jQuery扩展插件

    集成步骤: 1.安装jquery极其扩展插件库ts定义文件 npm install jquery --save npm install --save-dev @types/jquery npm ins ...

  6. jdk的配置

    在新建页面系统变量,输入变量名"JAVA_HOME":变量值"你的jdk的路径 在系统变量区域,选择"新建",输入变量名"CLASSPATH ...

  7. Navicat永久激活步骤,激活工具,解决注册码无效的问题

    Navicat for MySQL是一套管理和开发MySQL或MariaDB的理想解决方案,支持单一程序,可同时连接到MySQL和MariaDB.这个功能齐备的前端软件为数据库管理.开发和维护提供了直 ...

  8. CSS中的背景、雪碧图、超链接的伪类样式

    一.背景 1.背景颜色 background-color: red; 2.背景图片 background-image: url("../../img/l1.png"); 3.图片填 ...

  9. 学习Layui 第一天

    Layui 官网说这是款经典模块化前端框架 个人觉得Layui很好用,容易上手. 在学习Layui的之前.先去官网下载必要的文件 将这些文件放入项目当中 然后可以到官网看一下示例. 可以做一个简单的表 ...

  10. PAT1092:To Buy or Not to Buy

    1092. To Buy or Not to Buy (20) 时间限制 100 ms 内存限制 65536 kB 代码长度限制 16000 B 判题程序 Standard 作者 CHEN, Yue ...