题目大意:

有一个n*20的棋盘,上面有若干棋子
对于一个棋子,能将它向右移动一格,如果右边有棋子,则向右跳到第一个空格,如果右边没有空格,则不能移动这个棋子,如果所有棋子都不能移动,那么将输掉这场比赛

思路:

我们考虑sg函数,显然最后一个状态下,右边全是一是必赢的,然后我们暴力搜出所有sg函数的,这样就可以o(1)判断了。

程序:

#include<cstdio>
#include<cstdlib>
#include<cstring>const int N=1048578;int sg[N],rec[N];
int t,n,m,sum,p,x;void get_sg(int x){if (~sg[x]) return;for (int i=0;i<=19;i++) if (x&(1<<i)){for (int j=i+1;j<=19;j++) if (!(x&(1<<j))){int y=x; y=y^(1<<i); y=y^(1<<j);get_sg(y);break;}}for (int i=0;i<=19;i++) if (x&(1<<i)){for (int j=i+1;j<=19;j++) if (!(x&(1<<j))){int y=x; y=y^(1<<i); y=y^(1<<j);rec[sg[y]]=x;break;}}for (sg[x]=0;rec[sg[x]]==x;) sg[x]++;
}int main(){memset(sg,-1,sizeof(sg));for (int i=0;i<=(1<<20)-1;i++) get_sg(i);scanf("%d",&t);while (t--){sum=0;scanf("%d",&n);for (int i=1;i<=n;i++){scanf("%d",&m);p=0;for (int j=1;j<=m;j++){scanf("%d",&x);p|=1<<(x-1);}sum^=sg[p];}if (sum) printf("YES\n");else printf("NO\n");}return 0;
}

P2575 高手过招(博弈)相关推荐

  1. P2575 高手过招

    P2575 高手过招 题意: AKN玩游戏玩累了,于是他开始和同伴下棋了,玩的是跳棋!对手是wwx!这两位上古神遇在一起下棋,使得棋局变得玄幻莫测,高手过招,必有一赢,他们都将用最佳策略下棋,现在给你 ...

  2. 洛谷 P2575 高手过招

    题目描述 AKN玩游戏玩累了,于是他开始和同伴下棋了,玩的是跳棋!对手是wwx!这两位上古神遇在一起下棋,使得棋局变得玄幻莫测,高手过招,必有一赢,他们都将用最佳策略下棋,现在给你一个n*20的棋盘, ...

  3. P2575 高手过招 (博弈、sg函数)

    题目链接 题面: 题解: 用sg函数把所有的状态打出来就好啦. 代码: #include<iostream> #include<cstdio> #include<cstr ...

  4. 洛谷 [P2575] 高手过招

    SG函数+状压记忆化搜索 观察题目发现,每一行都是独立的,只要处理出来每一行的SG值,异或起来就好 每一行的SG值可以用状压+记忆化搜索的方法来求,对位运算技术是个很大的考验 注意SG值要预处理出来, ...

  5. Luogu P2575 高手过招

    题目链接 \(Click\) \(Here\) 关键在于转换成阶梯\(Nim\)的模型.最开始把题目看错了,理解正确后发现棋子可以向后跳不止一位,那么就比较简单了. 这里把空格看做阶梯,棋子看做硬币, ...

  6. 洛谷P2575 高手过招

    题目 题意: n*20的棋盘中有一些棋子,两人每次移动一个棋子,若该棋子右边有空位,就向右跳到第一个空格,若没有,则不能移动.若所有棋子都不能移动,就算输.问先手能不能胜 题解: 我们将一行棋盘看成一 ...

  7. 那些真正有用的经验,都是和高手过招换来的

    很多人都会通过各种手段,制造生意繁荣的假象,比如年底了小老板都喜提二手豪车,为的就是能压供应商的尾款. 很多加盟店,玩命请人排队,为的就是拍几段生意爆火的宣传片,最后收割一波韭菜. 电商喜欢刷数据,微 ...

  8. 特仑苏VS金典,解读高手过招

    特仑苏VS金典,解读高手过招 2005年蒙牛乳业推出了旗下高端品牌"特仑苏",就此拉开了国内液态奶产品升级的帷幕.作为蒙牛的老对手,伊利自然不甘示弱,随后以"金典&quo ...

  9. 和高手过招:刺激、心跳

    和高手过招:刺激.心跳 转载于:https://www.cnblogs.com/JAVA-STUDYER/p/7777483.html

最新文章

  1. (转)JS之——解决IE6、7、8使用JSON.stringify报JSON未定义错误的问题
  2. LeetCode LFU Cache
  3. XML基础教程(2)
  4. File转化为MultipartFile
  5. API网关Kong系列(一)初识
  6. Ajax-基本概述(one)
  7. mysql直连1.执行语句_MySQL随笔01_一条SQL语句是如何执行的
  8. Linq的一些操作符-图表展示
  9. 特征图注意力_向往的GAT(图注意力模型)
  10. iOS之深入探究多线程实现、线程安全和线程死锁
  11. java定义js函数_JS中可以先使用函数,然后再定义.
  12. 在vue文件引入echarts_vue引入echarts地图的三种方式
  13. 干货 | 万字长文带你复习线性代数!
  14. 360安全卫士默认浏览器设置 360默认浏览器设置 锁定浏览器
  15. android百度地图poi路线规划,百度地图开发之poi检索,线路规划(示例代码)
  16. 中国移动科普:为什么手机移动网络要叫 “蜂窝移动网络”
  17. 零基础入行IT,怎么成为一名优秀的IT人才?
  18. Pycharm2018.2永久破解
  19. 2020年6月六级真题翻译:青藏铁路
  20. win10调节键盘灵敏度的方法

热门文章

  1. 各类预警信号颜色及级别
  2. Java 的数据类型
  3. 免疫球蛋白IgG偶联CdTe量子点|多肽Exendin-4偶联羧基化量子点QDs-COOH|硒化镉量子点偶联羟基磷灰石
  4. artDialog使用
  5. 如何查看linux kernel邮件列表
  6. 解决方法dataSource init error java.sql.SQLException: com.mysql.cj.jdbc.Driver
  7. matlab中clear all,删除CLEAR ALL提高性能
  8. 央视春晚40年来首次采用国产8K摄像机摄制
  9. Excel 退出页眉与页脚编辑状态
  10. spring定时器 cron表达式