1443的强化版,黑白染色后,节点颜色若和染色不同,因为永远不会到达,可以视为障碍,每次移动空格到一个位置,那个位置的颜色交换到空格处,也变成障碍,所以可视为不能重复经过一点,判断每次操作前是不是必胜态只需判所处的点是否是必经点

#include<set>
#include<map>
#include<deque>
#include<queue>
#include<stack>
#include<cmath>
#include<ctime>
#include<bitset>
#include<string>
#include<vector>
#include<cstdio>
#include<cstdlib>
#include<cstring>
#include<climits>
#include<complex>
#include<iostream>
#include<algorithm>
#define ll long long
using namespace std;const int maxn = 11000;
const int maxm = 110000;
const int maxr = 50;
const int maxc = 50;
const int dx[] = {-1,0,1,0};
const int dy[] = {0,1,0,-1};int n,m,sx,sy;
int col[maxr][maxc];
int num,id[maxr][maxc];
int pn[2],pi[2][maxn];struct edge
{int y,nex;edge(){}edge(const int _y,const int _nex){y=_y;nex=_nex;}
}a[maxm<<1]; int len,fir[maxn];
void ins(const int x,const int y){a[++len]=edge(y,fir[x]); fir[x]=len;}bool v[maxn],flag[maxn];
int t[maxn],tp;
int match[2][maxn],ki;
bool find_(const int x)
{if(v[x]) return false;v[t[++tp]=x]=true;for(int k=fir[x];k;k=a[k].nex){const int y=a[k].y;if(flag[y]) continue;if(!match[!ki][y]||find_(match[!ki][y])){match[ki][x]=y,match[!ki][y]=x;return true;}}return false;
}int sc[maxr][maxc];bool win[maxn];
int ansn,ans[maxn];int main()
{len=0; //scanf("%d%d",&n,&m);char str[maxc];for(int i=1;i<=n;i++){scanf("%s",str+1);for(int j=1;j<=m;j++){if(str[j]=='.') sx=i,sy=j,sc[i][j]=0;else if(str[j]=='X') sc[i][j]=0;else sc[i][j]=1;}}memset(col,-1,sizeof col);int scx=(sx+sy)&1,st;for(int i=1;i<=n;i++){for(int j=1;j<=m;j++) if(sc[i][j]==(((i+j)&1)^scx)){col[i][j]=sc[i][j];id[i][j]=++num;pi[sc[i][j]][++pn[sc[i][j]]]=num;if(i==sx&&j==sy) st=num;}}for(int i=1;i<=n;i++){for(int j=1;j<=m;j++) if(col[i][j]!=-1){for(int k=0;k<4;k++){const int x=i+dx[k],y=j+dy[k];if(col[x][y]!=-1) ins(id[i][j],id[x][y]),ins(id[x][y],id[i][j]);}}}ki=0;for(int i=1;i<=pn[ki];i++){find_(pi[ki][i]);while(tp) v[t[tp--]]=false;}int q; scanf("%d",&q); q<<=1;for(int i=1;i<=q;i++){int x,y; scanf("%d%d",&x,&y); x=id[x][y];win[i]=true;flag[st]=true;if(!match[ki][st]) win[i]=false,ki=!ki;else{y=match[ki][st];match[ki][st]=0;ki=!ki; match[ki][y]=0;if(find_(y)) win[i]=false;while(tp) v[t[tp--]]=false;}st=x;}for(int i=2;i<=q;i+=2)if(win[i-1]&&win[i]) ans[++ansn]=i>>1;printf("%d\n",ansn);for(int i=1;i<=ansn;i++) printf("%d\n",ans[i]);return 0;
}

BZOJ2437: [Noi2011]兔兔与蛋蛋相关推荐

  1. 【BZOJ2437】【codevs1949】兔兔与蛋蛋游戏,博弈+二分图匹配

    传送门1 传送门2 思路: 关于证明 算是bzoj1443的强化版吧 但我是先写的这道题再写的bzoj1443,所以刚开始比较懵逼 二分图中的点是空格.与空格坐标和的奇偶相同的黑点.坐标和奇偶不同的白 ...

  2. 【题解】P1971 [NOI2011] 兔兔与蛋蛋游戏

    首先可以推出来一个引理:空格不可能在经过几次操作后回到原来的位置. 大概感性证明一下:容易发现这个空格如果想要走成一个环,向上走的次数=向下走的次数,向左走的次数=向右走的次数.那么如果开始是兔兔走的 ...

  3. [NOI2011] 兔兔与蛋蛋游戏题解

    题目描述 这些天,兔兔和蛋蛋喜欢上了一种新的棋类游戏. 这个游戏是在一个 nn 行 mm 列的棋盘上进行的.游戏开始之前,棋盘上有一个格子是空的,其它的格子中都放置了一枚棋子,棋子或者是黑色,或者是白 ...

  4. linux 性能测试 antutu,除了安兔兔跑分,还有这6种办法能证明手机强弱

    原标题:除了安兔兔跑分,还有这6种办法能证明手机强弱 现在说起手机跑分,已经稀松平常,但早在五年前,很多手机用户根本不知道如何测试手机性能."跑分"这个词汇只会出现在媒体的评测文章 ...

  5. android 跑分软件,跑分软件安兔兔公布了6月份Android手机性能榜TOP10

    看了一下这期的安兔兔Android手机性能TOP10,对于华为来说,打击巨大,搭载麒麟处理器的手机没一款上榜,反观高通,则是疯狂屠榜,从第一名到第十名,都是使用它家骁龙8系列处理器的手机. 昨天国内知 ...

  6. iPhonexr安兔兔html5测试,给大家科普下iphonexr苹果手机安兔兔跑分多少分

    现在越来越多的小伙伴对于iphonexr苹果手机安兔兔跑分多少分这方面的问题开始感兴趣,因为大家现在都是想要熟知,学到这当中的各项功能,那么既然现在大家都想要知道iphonexr苹果手机安兔兔跑分多少 ...

  7. android 手机跑分,安兔兔安卓手机跑分性能榜公布:第一名实至名归?

    3月5日消息,安兔兔官方放出了2019年2月份国内安卓手机的性能跑分排行榜.从榜单中我们可以看到排名前三的分别是:小米9.联想Z5 Pro GT 855版.红魔Mars电竞手机. 不出所料,前三名都是 ...

  8. 十月 android版本分布,安兔兔发布2018年10月份Android手机性能排行榜

    汽车行业有金九银十一说,手机行业同样也是如此.在刚刚过去的 10 月份,我们见证了多款国产旗舰手机的发布,包括Mate20 系列.小米MIX3.荣耀Mgaic 2.努比亚X等等,得益于强大的硬件配置, ...

  9. 小米redmi_安兔兔公布12月安卓手机性能榜:小米、Redmi领衔

    1月5日,安兔兔官方发布了"2020年12月份安兔兔Android手机性能排行"榜单,包括旗舰安卓手机与中端安卓手机两个类别.榜单显示,在旗舰手机中,性能排名第一的是刚刚发布不久的 ...

  10. 最新处理器排名_安兔兔Android处理器天梯榜发布:最强的还是它

    点击上方蓝字[安兔兔]关注我 文章每天不断更! 为了让大家对自己使用的手机处理器性能有一个更直观的认知,安兔兔今天正式发布了Android手机处理器天梯榜.由于安兔兔V8增加了存储和刷新率在总分方面所 ...

最新文章

  1. 学点Webpack吧
  2. SSH暴力破解IP大曝光
  3. VC中新建的类不见了的解决方法
  4. python实例讲解wxpythonhyh123_Python实例讲解 -- wxpython 基本的控件 (按钮)
  5. Reverse原理背后的数学和魔幻艺术
  6. php数据库缓存实现原理,PHP那些事:数据库缓存原理
  7. idea配置jfinal_JFinal 开箱评测,这次我是认真的
  8. Studio for WPF:使用 C1TileView 创建图片库
  9. psp2000 M33 自制固件---恢复模式说明(基本所有版本都适用)
  10. SciPy 安装不上?
  11. “萝卜快跑”,“快”不起来——百度Robotaxi试乘体验
  12. 安卓模拟器,需要的自取
  13. 清华镜像下载pytorch 2022-06-23
  14. 2015计算机基础知识,计算机基础知识题库【2015版】
  15. 为学日益,为道日损——编程的学与做
  16. TIA博途WINCC的触摸屏VB脚本入门学习(IF THEN ELSE判断语句)
  17. notifyDataSetInvalidated()和notifyDataSetChanged()的区别
  18. 编程进阶一:编译器的特殊功能使用及借助编译时完成数据的初始化
  19. SpringBoot2.x系列教程38--整合JAX-RS之利用Jersey框架实现RESTful
  20. 用java做个新手引导功能,Unity3D新手引导开发手记

热门文章

  1. 计算机系统(1) 实验五 中断实验
  2. 基于MATLAB的图像处理程序
  3. 微信开发(微信公众号)
  4. 【Shell 脚本速成】01、编程语言与 Shell 脚本介绍
  5. WebRTC Trickle ICE 策略
  6. 【管理】需求分析与软件设计|需求分析报告和需求规格说明书的区别
  7. vb发送到文件服务器,VB实现文件上传到FTP服务器
  8. BurpSuite 基本使用之暴力破解
  9. 基层服务项目服务器一般几年,基层事业单位有5年服务期,期间可以提拔或调动吗?看完知道了!...
  10. 技术分析中的五种常见指标