Chess
来源:互联网 发布:淘宝腔调设计师 编辑:程序博客网 时间:2024/04/28 22:05
Chess
.
.
经典博弈问题,sg函数的应用,因为m<=20,用状态压缩存储就好了。
.
.
队友代码
#include <bits/stdc++.h>using namespace std;int a[2000002];int p[50];int b[50];int s[50];int T;int n, m;int x;int ans;void makefull(){ p[1] = 1; for (int i = 2; i < 25; i++) p[i] = 2*p[i-1] + 1;}int main(){ for (int i = 0; i < 1048576; i++) a[i] = -1; a[0] = 0; makefull(); for (int i = 1; i <= 20; i++) a[p[i]] = 0; for (int i = 1; i < 1048576; i++) if (a[i] == -1) { for (int j = 0; j < 20; j++) s[j] = 0; int t = i, len; for (len = 1; t > 0; len++) { b[len] = t & 1; t>>=1; } for (int ii = 1; ii < len; ii++) { if (b[ii] == 0) { for (int jj = ii+1; jj < len; jj++) { int yuan = (i%(1<<jj))>>ii; if ((yuan) == p[jj-ii]) { int pos = i-(yuan<<ii)+(yuan << (ii-1)); s[a[pos]] = 1; } else break; } } } for (a[i] = 0; s[a[i]]; a[i]++); } scanf("%d", &T); while (T--) { scanf("%d", &n); ans = 0; for (int i = 1; i <= n; i++) { scanf("%d", &m); x = 0; for (int j = 1; j <= m; j++) { int xx; scanf("%d", &xx); xx = 20 - xx; x += (1<<xx); } ans ^= a[x]; } if (ans > 0) puts("YES"); else puts("NO"); } return 0;}
0 0
- chess
- Chess
- chess
- chess
- Chess
- Chess
- Chess
- chess
- Chess
- Chess
- Chess Tutorial
- Network chess
- java chess
- MM-Chess
- codeforces Chess
- CSU1459:Chess
- AHOI2009 chess
- HDU5724 Chess
- 走近科学:“索伦之眼”深入追踪
- 二进制流和文本流区别C
- 浙大PAT甲级 1041
- 连接或断开蓝牙键盘时,手机会重新搜索蓝牙设备
- 你为什么一定要使用 Google ?
- Chess
- ZZULIOJ-【1917: E】
- 文章标题
- Node——玩转进程
- synchronized 详解
- ANSI C标准中标准预定义宏整理(备用)
- 【ADB命令行】adb shell screenrecord命令行使用说明
- perl 字符串相关操作
- 验证信息的判断