Gym - 100886B 2015-2016 Petrozavodsk Winter Training Camp, Saratov SU Contest B - Game on Bipartite
题目有很强的结论,看代码应该可以知道结论是什么
但是想了两天还是没有想到一个严格的证明
大概思路:
首先边的奇偶影响答案(走过去优就继续拓展,不优就走回来)
转化为01问题
考虑消元的过程中,对面的一个点会发生什么
如果这个点可以成为主元,说明从这个点出发一定会有奇数长度的路径(即便是双方交替进行)
↑感性认识一下感觉非常有道理,然而并不会证(sad
然后基于这个结论就可以做了,把其他所有点的出边情况送进去消元,消完后再把起点也丢进去判断是否会被消掉
因为这是公平博弈,所以可以用相同方法判断对方在某个点的胜负,故可以产生方案
UPD:
似乎是后手只要不断把先手往基上拉,先手就会输,所以要看起点能不能被消掉
先手不往基上走为啥会赢我没搞清楚,感觉与行列消元得到的主元相同有联系
Thx to yjq
#include<stdio.h>
#include<cstring>
#include<cstdlib>
#define N 51
typedef long long ll;int n,m,e,v,edg[N][N],d1[N],d2[N];
ll row[N],col[N],pivot[N];inline bool add(ll mask)
{for (int i=1;i<N;i++) if (mask>>i&1) {if (pivot[i]) mask^=pivot[i]; else {pivot[i]=mask;return 1;}}return 0;
}inline void go(int t)
{printf("%d\n",t);fflush(stdout);--edg[v][t];--d1[v];row[v]^=1LL<<t;col[t]^=1LL<<v;if (--d2[t]==0){puts("Player 1 wins");exit(0);}scanf("%d",&v);--edg[v][t];--d1[v],--d2[t];row[v]^=1LL<<t;col[t]^=1LL<<v;
}inline bool check(int y)
{memset(pivot,0,sizeof(pivot));for (int i=1;i<=m;i++) if (i!=y) add(col[i]);return !add(col[y]^(1LL<<v));
}inline void win()
{while (1){for (int i=1;i<=m;i++) if (edg[v][i] && check(i)) {go(i);break;}}
}inline void lost()
{while (1) {bool flag=1;for (int i=1;i<=m;i++) if (edg[v][i]) go(i),flag=0;if (flag) {puts("Player 2 wins");exit(0);}continue;}
}int main()
{scanf("%d%d%d%d",&n,&m,&e,&v);for (int u,v;e--;) {scanf("%d%d",&u,&v);++d1[u],++d2[v];++edg[u][v];row[u]^=1LL<<v;col[v]^=1LL<<u;}for (int i=1;i<=n;i++) if (i!=v) add(row[i]);if (add(row[v])) win(); else lost();
}
Gym - 100886B 2015-2016 Petrozavodsk Winter Training Camp, Saratov SU Contest B - Game on Bipartite相关推荐
- 2015-2016 Petrozavodsk Winter Training Camp, Nizhny Novgorod SU Contest
地址 Rank Solved A B C D E F G H I 60/176 4/9 . O O . . . O O . O: 当场通过 Ø: 赛后通过 .: 尚未通过 A Prevent a Ga ...
- 2020-2021 Winter Petrozavodsk Camp, Belarusian SU Contest (XXI Open Cup, Grand Prix of Belarus)
题目链接 C. Brave Seekers of Unicorns 给出一个好数组的定义: 1.1.1. 长度不为空 2.2.2. a[i]⨁a[i−1]⨁a[i−2]≠0a[i] \bigoplus ...
- 2015 UESTC Winter Training #10【Northeastern Europe 2009】
2015 UESTC Winter Training #10 Northeastern Europe 2009 最近集训都不在状态啊,嘛,上午一直在练车,比赛时也是刚吃过午饭,状态不好也难免,下次比赛 ...
- 2015 UESTC Winter Training #6【Regionals 2010 North America - Rocky Mountain】
2015 UESTC Winter Training #6 Regionals 2010 >> North America - Rocky Mountain A - Parenthesis ...
- 五年级计算机学情分析,2015—2016学年小学五年级信息技术上册教学计划
一.指导思想 以教育部<中小学信息技术课程指导纲要>为指导.培养学生对信息技术的兴趣和意识,让学生了解和掌握信息技术基本知识和技能,了解信息技术的发展及其应用对人类日常生活和科学技术的深刻 ...
- Codeforces Round #588 (Div. 2) D. Marcin and Training Camp 思维
传送门 文章目录 题意: 思路: 题意: 有nnn个人,每个人都有一个能力值bib_ibi以及他会的技能aia_iai,当他会第xxx个技能的时候,aia_iai的第xxx位是111.定义当xx ...
- LSGO软件技术团队2015~2016学年第十七周(1221~1227)总结
团队简述: LSGO软件技术团队成立于2010年10月,主要从事的应用方向为互联网与移动互联网(UI设计,前端开发,后台开发),地理信息系统:研究方向为大数据处理与机器学习.成立几年来为学校培养了一批 ...
- LSGO软件技术团队2015~2016学年第十六周(1214~1220)总结
团队简述: LSGO软件技术团队成立于2010年10月,主要从事的应用方向为互联网与移动互联网(UI设计,前端开发,后台开发),地理信息系统:研究方向为大数据处理与机器学习.成立几年来为学校培养了一批 ...
- LSGO软件技术团队2015~2016学年第十五周(1207~1213)总结
团队简述: LSGO软件技术团队成立于2010年10月,主要从事的应用方向为互联网与移动互联网(UI设计,前端开发,后台开发),地理信息系统:研究方向为大数据处理与机器学习.成立几年来为学校培养了一批 ...
- LSGO软件技术团队2015~2016学年第十三周(1123~1129)总结
团队简述: LSGO软件技术团队成立于2010年10月,主要从事的应用方向为互联网与移动互联网(UI设计,前端开发,后台开发),地理信息系统:研究方向为大数据处理与机器学习.成立几年来为学校培养了一批 ...
最新文章
- 使用多个JFrame:好的还是不好的做法? [关闭]
- linux查看执行过的命令行,在Linux命令终端中查看和编辑曾执行过的命令 – LINUX笔记 – CFEI.NET...
- HTML5 APP项目展示响应式网页模板
- 网站安全之XSS漏洞攻击以及防范措施
- ionic xcode 上传appstroe 创建Distribution证书报错 you already have a current iOS Distribution certificate
- 软件测试验收方法_验收测试是美丽的魔术。 这就是它可以改善您的生活的方法。...
- python七月超有用的十大开源代码(2019)
- python循环中释放内存的方法_我怎样才能在Python中明确释放内存?
- 送小公主——哆啦A梦(Python代码实现)
- 算法练习-鸡兔同笼问题
- excel 查找/替换 回车键
- 软件工程方法论对开发的有多大用?
- oracle spatial 论文,oraclespatial在实际应用中的六大功能体现
- 【数智化案例展】浙江电信——数据中台与BI技术助力通信行业驱动高质量数据价值的流通闭环...
- php新浪微博 登录接口文档,新浪微博的账号登录及PHP api操作
- 值得你半辈子思考的话
- 算法工程师9——机器学习概述(下篇-算法进阶)
- 【python代码实现】朴素贝叶斯分类算法
- Windows下安装NTP服务器——搭建时间同步服务器
- 金太阳联考2021高考成绩查询,广东金太阳高三联考2021成绩查询