2016 多校最后一题 (HDU 5724) Chess (组合博弈)
来源:互联网 发布:什么软件看小说免费 编辑:程序博客网 时间:2024/05/23 16:55
题目大概说有n行,每行20格子,都有一些棋子,两个人轮流进行这个操作:选择某一行一个棋子移动到该行右边第一个空的格子。不能进行的人输。问先手是否能赢。
这个博弈显然是组合博弈,先手后手交替进行、每次决策是有限的、有胜利条件。。然后SG定理搞了。。用set记录集合竟然T了。。。。
#include <cstdio>#include <iostream>#include <set>using namespace std;#define L(i) i<<1#define R(i) i<<1|1#define INF 0x3f3f3f3f#define pi acos(-1.0)#define eps 1e-9#define maxn 2000010#define MOD 1000000007int n,m;int sg[maxn];int main(){ int t; sg[0] = 0; sg[1] = 0; for(int x = 2; x <= (1<<20); x++) { int h[25] = {0}; int pre = -1; for(int i = 0; i <= 20; i++) { if(x&(1<<i)) { if(pre == -1) continue; else { int k = x - (1<<i) + (1<<pre); h[sg[k]] = 1; } } else pre = i; } int res = 0; while(h[res]) res++; sg[x] = res; } scanf("%d",&t); while(t--) { scanf("%d",&n); int ans = 0; for(int i = 0; i < n; i++) { scanf("%d",&m); int k = 0; for(int j = 0; j < m; j++) { int x; scanf("%d",&x); k += (1<<(20-x)); } ans ^= sg[k]; } printf("%s\n",ans==0?"NO":"YES"); } return 0;}
0 0
- 2016 多校最后一题 (HDU 5724) Chess (组合博弈)
- (组合博弈)(sg函数模版)HDU 5724 Chess
- HDU 5724 Chess(状态压缩+组合博弈)
- HDU 5724 Chess(博弈,SG函数)
- HDU 5724 Chess(博弈&状压)
- hdu 5724 Chess(sg博弈)
- HDU 5724 Chess (博弈)
- hdu 5724chess 博弈
- hdu5724 Chess(博弈)
- HDU 6114 Chess (组合数 思路)
- HDU 6114 Chess(组合数学)
- ACM2016多校联赛1B hdu5724 Chess(博弈)
- 组合博弈(NIM博弈和巴什博奕组合) hdu 1851
- HDU ACM 1524 A Chess Game->博弈(SG函数)
- HDU-5724-组合博弈
- HDU 5724 Chess (博弈 状压+sg函数)
- HDU 5724 Chess(SG函数 Nim博弈)
- HDU 5724 Chess(SG博弈 + 状压)
- 【MAVEN】项目管理插件maven-plugins
- java java.lang.NoClassDefFoundError记录
- Python爬虫----实例: 抓取百度百科Python词条相关1000个页面数据
- 车小胖谈网络:MTU 与 MSS
- Window 通过cmd查看端口占用、相应进程、杀死进程等的命令
- 2016 多校最后一题 (HDU 5724) Chess (组合博弈)
- 安卓项目之淘忆2.0的界面设计部分三
- Android_Matrix
- code review
- UITextField
- 多人合作的git项目无法自动更新
- eclipse插件Maven添加依赖查询无结果的解决方法(Select Dependency doesn't work)
- Hibernate中设置实体的属性为当前系统时间
- 关于图片解压缩,导致scrollView滚动卡顿