http://poj.org/problem?id=3533

变成三维的nim积。。前面hdu那个算二维nim积的题的函数都不用改,多nim积一次就过了。。。longlong似乎不必要但是还是加上了

代码

 1 #include<cstdio>
 2 #include<cstring>
 3 #include<algorithm>
 4 #include<cmath>
 5 #include<iostream>
 6 #include<map>
 7 #include<ctime>
 8 using namespace std;
 9 long long n;
10 long long sg[21][21]={};
11 long long f(long long,long long);
12 long long g(long long x,long long y){
13     if(sg[x][y]!=-1)return sg[x][y];
14     if(!x)return sg[x][y]=1<<y;
15     if(!y)return sg[x][y]=1<<x;
16     long long ans=1,k=1,t;
17     long long x1=x,y1=y;
18     while(x||y){
19         t=1<<k;
20         if((x^y)&1){
21             ans*=t;
22         }
23         x>>=1;y>>=1;k<<=1;
24     }
25     k=1;x=x1;y=y1;
26     while(x||y){
27         t=1<<k;
28         if((x&y)&1){
29             ans=f(ans,t/2*3);
30         }
31         x>>=1;y>>=1;k<<=1;
32     }return sg[x1][y1]=ans;
33 }
34 long long f(long long x,long long y){
35     if(!x||!y)return 0;
36     if(x==1)return y;
37     if(y==1)return x;
38     long long ans=0;
39     for(long long i=x,a=0;i;i>>=1,a++){
40         if(!(i&1))continue;
41         for(long long j=y,b=0;j;j>>=1,b++){
42             if(!(j&1))continue;
43             ans^=g(a,b);
44         }
45     }return ans;
46 }
47 int main(){
48     memset(sg,-1,sizeof(sg));
49     while(~scanf("%lld",&n)){
50         long long ans=0,x,y,z;
51         for(long long i=1;i<=n;i++){
52             scanf("%lld%lld%lld",&x,&y,&z);
53             ans^=f(z,f(x,y));
54         }
55         if(ans)printf("No\n");
56         else printf("Yes\n");
57     }
58     return 0;
59 }

View Code

转载于:https://www.cnblogs.com/137shoebills/p/8340884.html

POJ 3553 Light Switching Game 博弈论 nim积 sg函数相关推荐

  1. 闲来无事刷水题、简单博弈论专题、sg函数、洛谷

    记 今天闲来无事,不想刷codeforces了,到洛谷提高组训练营找几道水题刷着玩玩(虽然自己早已过了打OI的年纪)- 简单博弈论专题 P1199 三国游戏 这么考虑,由于电脑总是不能让我搭配出当前能 ...

  2. NIM博弈+SG函数求解

    ICG 给定一个有向无环图和一个起始顶点上的一枚棋子,两名选手交替的将这枚棋子沿有向边进行移动,无法移动者判负. 这个游戏可以认为是所有 Impartial Combinatorial Games 的 ...

  3. 博弈论初步(SG函数)

    讲解见此博客https://blog.csdn.net/strangedbly/article/details/51137432 理解Nim博弈,基于Nim博弈理解SG函数的含义和作用. 学习求解SG ...

  4. 【博弈论】【SG函数】bzoj1457 棋盘游戏

    一开始就必胜的特判一下. #include<cstdio> #include<cstring> #include<set> #include<algorith ...

  5. 剪纸游戏(博弈论)(SG函数)

    文章目录 题目描述 解析 题目描述 解析 本题的关键就是SG函数的定义 尝试了一些自己直观上可能对但题解没有使用的约定方法(当然最后证明都是错的 ...),对SG的理解更深刻了一些 SG=0的含义是无 ...

  6. 【博弈论】【SG函数】bzoj1777 [Usaco2010 Hol]rocks 石头木头

    仅有距根节点为奇数距离的节点的石子被移走对答案有贡献,∵即使偶数的石子被移走,迟早会被再移到奇数,而奇数被移走后,不一定能够在移到偶数(到根了). 最多移L个:石子数模(L+1),比较显然,也可以自己 ...

  7. 博弈论(Nim游戏、有向图游戏之SG函数)

    这里写目录标题 经典NIM游戏 Nim游戏属于公平组合游戏ICG 有向图游戏(SG函数) Mex运算 SG函数 单个有向图(一堆石子) 求SG值(记忆化递归) 有向图游戏的和 ,(多个有向图(多堆石子 ...

  8. 博弈论与SG函数(Nim游戏)

    博弈论与SG函数(Nim游戏) 目录 博弈论与SG函数(Nim游戏) 游戏状态 状态图(SG图) Nim 游戏 Nim 和 SG函数 Grundy数字 组合博弈游戏 Grundy 游戏 例题 在本篇, ...

  9. 【甜椒ACM】博弈论入门(Nim、sg定理)

    博弈论入门(Nim.sg定理) 通常由以下形式构成:给定一个游戏规则,甲.乙轮流出手行动,最后无法行动的人失败,问获胜方是谁/是否存在先手必胜策略等等. 游戏的前提是,默认"双方都最聪明&q ...

最新文章

  1. ORM表之间的多对多处理
  2. 视觉SLAM总结——LSD SLAM中关键知识点总结
  3. 协方差与相关系数的再理解
  4. OpenCV多目标跟踪与视频分析
  5. 盒子模型代码_果冻公开课第五课:五分钟理清盒模型的前世今生
  6. C语言 小游戏 电脑大概率获胜,用C语言实现简单的三子棋小游戏
  7. FlexCAN和CAN的关系
  8. Android 手机卡了怎么办
  9. 服务器pfx文件如何导入,linux 导入pfx 证书
  10. InfluxDB 2.0 原理与应用实践
  11. python box_箱体图Boxplot及Python绘制方
  12. csgo删除机器人_《CSGO》补丁突然移除补位机器人 队友掉线只能4v5!
  13. Oracle数据库,建库建表
  14. 撤销院士称号!两名原院士,被当作反面典型通报
  15. 阿里云 https ssl 网站配置 备案记录
  16. CISAW安全集成考试有了新变化
  17. 华三交换机配置三权账号(V7版本)
  18. 【比特鹏哥C语言_3.函数】
  19. golang chanel
  20. 如何利用服务虚拟化模拟缺陷?

热门文章

  1. 微信浏览器的html5页面显示配置等问题汇集 1,禁止微信浏览器分享页面链接 (定点更新)...
  2. 用黄金圈思维来思考测试
  3. javascript 数组排序
  4. buildroot的使用简介【转】
  5. 转:Hash, MAC,HMAC说明
  6. Oracle关联更新语法(T-SQL中的update...from)
  7. 数字内置方法详解(int/long/float/complex)
  8. Django开发社交类网站必备的10个第三方应用
  9. 关于json_decode乱码及NULL的解决方法
  10. Jsoup解析的例子 之 选择器