bzoj2437 [Noi2011]兔兔与蛋蛋
二分图博弈果然都是一个套路,必经点必胜,非必经点必败,
但是肯定不能每走一步就重新建图判断必胜还是必败,那么我们可以这样:每走一步就把这个点删掉,然后find他原来的匹配,如果找不到,就说明他是必经点,否则就是非必经点。
1 #include <cstdio> 2 #include <cstring> 3 #include <iostream> 4 #include <algorithm> 5 #include <cmath> 6 #define N 1601 7 using namespace std; 8 int e=1,head[N]; 9 struct edge{int v,next;}ed[N*4]; 10 void add(int u,int v){ed[e].v=v;ed[e].next=head[u];head[u]=e++;} 11 int pp[N],del[N],id[41][41]; 12 bool vis[N],ans[N]; 13 bool find(int x){ 14 for(int i=head[x];i;i=ed[i].next){ 15 int v=ed[i].v; 16 if(del[v]||vis[v])continue;vis[v]=1; 17 if(!pp[v]||find(pp[v])){ 18 pp[v]=x;pp[x]=v; 19 return 1; 20 } 21 }return 0; 22 } 23 int a[41][41],be,n,m,T,sx,sy,tot1,tot2,tot; 24 char ch[41]; 25 bool check(int i,int j){return ((i+j)&1)^a[i][j]==be;} 26 int f[N],f_cnt; 27 int main(){ 28 scanf("%d%d",&n,&m); 29 for(int i=1;i<=n;i++){ 30 scanf("%s",ch+1); 31 for(int j=1;j<=m;j++) 32 if(ch[j]=='O')a[i][j]=1; 33 else if(ch[j]=='X')a[i][j]=0; 34 else sx=i,sy=j; 35 } 36 be=(sx+sy)&1; 37 for(int i=1;i<=n;i++) 38 for(int j=1;j<=m;j++)if(check(i,j)) 39 if(a[i][j])id[i][j]=++tot1; 40 else id[i][j]=++tot2; 41 for(int i=1;i<=n;i++) 42 for(int j=1;j<=m;j++)if(check(i,j)&&(!a[i][j])) 43 id[i][j]+=tot1; 44 tot=tot1+tot2; 45 for(int i=1;i<=n;i++) 46 for(int j=1;j<=m;j++)if(id[i][j]){ 47 if(id[i+1][j])add(id[i][j],id[i+1][j]); 48 if(id[i][j+1])add(id[i][j],id[i][j+1]); 49 if(id[i-1][j])add(id[i][j],id[i-1][j]); 50 if(id[i][j-1])add(id[i][j],id[i][j-1]); 51 } 52 for(int i=1;i<=tot1;i++){ 53 memset(vis,0,sizeof vis); 54 find(i); 55 } 56 scanf("%d",&T);T<<=1; 57 for(int i=1,x,y;i<=T;i++){ 58 int now=id[sx][sy],p=pp[now]; 59 del[now]=1;pp[now]=pp[p]=0; 60 if(!p)ans[i]=0; 61 else{ 62 memset(vis,0,sizeof vis); 63 ans[i]=find(p)^1; 64 } 65 scanf("%d%d",&sx,&sy); 66 } 67 for(int i=1;i<=T;i+=2) 68 if(ans[i]&&ans[i+1])f[++f_cnt]=(i+1)>>1; 69 printf("%d\n",f_cnt); 70 for(int i=1;i<=f_cnt;i++) 71 printf("%d\n",f[i]); 72 return 0; 73 }
View Code
转载于:https://www.cnblogs.com/Ren-Ivan/p/8352969.html
bzoj2437 [Noi2011]兔兔与蛋蛋相关推荐
- 【BZOJ2437】【codevs1949】兔兔与蛋蛋游戏,博弈+二分图匹配
传送门1 传送门2 思路: 关于证明 算是bzoj1443的强化版吧 但我是先写的这道题再写的bzoj1443,所以刚开始比较懵逼 二分图中的点是空格.与空格坐标和的奇偶相同的黑点.坐标和奇偶不同的白 ...
- 【题解】P1971 [NOI2011] 兔兔与蛋蛋游戏
首先可以推出来一个引理:空格不可能在经过几次操作后回到原来的位置. 大概感性证明一下:容易发现这个空格如果想要走成一个环,向上走的次数=向下走的次数,向左走的次数=向右走的次数.那么如果开始是兔兔走的 ...
- [NOI2011] 兔兔与蛋蛋游戏题解
题目描述 这些天,兔兔和蛋蛋喜欢上了一种新的棋类游戏. 这个游戏是在一个 nn 行 mm 列的棋盘上进行的.游戏开始之前,棋盘上有一个格子是空的,其它的格子中都放置了一枚棋子,棋子或者是黑色,或者是白 ...
- linux 性能测试 antutu,除了安兔兔跑分,还有这6种办法能证明手机强弱
原标题:除了安兔兔跑分,还有这6种办法能证明手机强弱 现在说起手机跑分,已经稀松平常,但早在五年前,很多手机用户根本不知道如何测试手机性能."跑分"这个词汇只会出现在媒体的评测文章 ...
- android 跑分软件,跑分软件安兔兔公布了6月份Android手机性能榜TOP10
看了一下这期的安兔兔Android手机性能TOP10,对于华为来说,打击巨大,搭载麒麟处理器的手机没一款上榜,反观高通,则是疯狂屠榜,从第一名到第十名,都是使用它家骁龙8系列处理器的手机. 昨天国内知 ...
- iPhonexr安兔兔html5测试,给大家科普下iphonexr苹果手机安兔兔跑分多少分
现在越来越多的小伙伴对于iphonexr苹果手机安兔兔跑分多少分这方面的问题开始感兴趣,因为大家现在都是想要熟知,学到这当中的各项功能,那么既然现在大家都想要知道iphonexr苹果手机安兔兔跑分多少 ...
- android 手机跑分,安兔兔安卓手机跑分性能榜公布:第一名实至名归?
3月5日消息,安兔兔官方放出了2019年2月份国内安卓手机的性能跑分排行榜.从榜单中我们可以看到排名前三的分别是:小米9.联想Z5 Pro GT 855版.红魔Mars电竞手机. 不出所料,前三名都是 ...
- 十月 android版本分布,安兔兔发布2018年10月份Android手机性能排行榜
汽车行业有金九银十一说,手机行业同样也是如此.在刚刚过去的 10 月份,我们见证了多款国产旗舰手机的发布,包括Mate20 系列.小米MIX3.荣耀Mgaic 2.努比亚X等等,得益于强大的硬件配置, ...
- 小米redmi_安兔兔公布12月安卓手机性能榜:小米、Redmi领衔
1月5日,安兔兔官方发布了"2020年12月份安兔兔Android手机性能排行"榜单,包括旗舰安卓手机与中端安卓手机两个类别.榜单显示,在旗舰手机中,性能排名第一的是刚刚发布不久的 ...
- 最新处理器排名_安兔兔Android处理器天梯榜发布:最强的还是它
点击上方蓝字[安兔兔]关注我 文章每天不断更! 为了让大家对自己使用的手机处理器性能有一个更直观的认知,安兔兔今天正式发布了Android手机处理器天梯榜.由于安兔兔V8增加了存储和刷新率在总分方面所 ...
最新文章
- 为Windows git 配置比较工具为beyond compare
- Tomcat的热部署和重新启动和重新部署的关系
- 寻人 | 一个有趣的职业可能性,与你分享
- 如何给开源项目提过 PR 呢?其实很简单
- PostgreSQL 最佳实践 - 水平分库(基于plproxy)
- P2167 [SDOI2009]Bill的挑战
- VC 实现文件夹属性的获取与更改
- gatsby_如何将静态Gatsby应用程序部署到Heroku
- 姓名抽签器c语言,在线抽签器
- jieba自定义分词规则与多进程切词
- 云计算学习笔记---异常处理---hadoop问题处理ERROR org.apache.hadoop.hdfs.server.datanode.DataNode: java.lang.NullPoin
- java怎样用类模板创建对象_java入门(十四) | 面向对象(OOP)之类和对象
- JAVA JSON转XML
- EnlightenGAN: Deep Light Enhancement without Paired Supervision论文阅读笔记
- Hibernate学习-14:实体之间的关系及其配置,级联操作
- Possibly consider using a shorter maxLifetime value.问题处理
- 【信息检索导论】第三章 容错式检索
- 组策略 gpedit.msc 及修复“无法为文件 appv.admx (*.admx)找到适当的资源文件(错误=2)”报错
- Linux线程基本知识
- 天天生鲜项目——用户订单页
热门文章
- 高斯低通滤波 matlab_一维和二维高斯函数及其一阶和二阶导数
- mysql数据库技术_MySQL数据库技术(13)[组图]_MySQL
- 黑马博客——详细步骤(九)项目功能的实现之mongoDB数据库添加账号
- 政史系列:《社会契约论》读书笔记
- android 梯形按钮_PLC编程入门梯形图实例讲解
- 腾讯T4梳理的必备笔记:自动化测试必掌握的30个核心知识点
- 过来人的亲身经验告诉你,如何从菜鸟晋升月薪过万的测试工程师
- 软件测试必学之python+unittest+requests+HTMLRunner编写接口自动化测试集
- 前台 时不时报 could not proxy request_长春中考成绩不理想可以报的高中
- php基础 简书,PHP的基础(一)