博弈问题,sg函数初步学习例题解析
来源:互联网 发布:淘宝网如何投诉物流 编辑:程序博客网 时间:2024/05/19 01:11
UVALive/LA 5059 Play with Stones 组合游戏/SG定理
#include <iostream>using namespace std;#define LL long longLL SG(LL x){ return x%2==0?x/2:SG(x/2);}int main(){ LL T; cin>>T; while(T--) { LL i,n,a,v=0; cin>>n; for(i=0;i<n;i++) { cin>>a; v^=SG(a); } if(v)cout<<"YES"<<endl; else cout<<"NO"<<endl; } return 0;}/*组合游戏:一个状态是必败状态当且仅当它的所有后继都是必败状态 一个状态是必胜条件当且仅当它至少有一个后继是必败状态 组合游戏的和。假设有k个组合游戏G1,G2,...Gk,可以定义一个新游戏,在每个回合中,当前游戏可以任选一个子游戏Gi进行一次合法操作,而让其他游戏的局面保持不变,不鞥操作的游戏者输。这个新游戏称为G1,G2,...,G3的和 SG函数和SG定理。对于任意状态x,定义SG(x)=mex(S),其中S是x的后继状态的SG函数值集合,mex(S)表示不在S内的最小非负整数。SG(x)当且仅当x为必败状态.游戏和的SG函数SG函数等于各子游戏SG函数的Nim和。 Bouton定理:状态(x1,x2,x3)为必败状态当且仅当x1^x2^x3=0,称为Nim和。可看做SG定理在Nim游戏中的运用*//*通过SG定理求得SG函数,然后通过找规律解决问题,SG(n)=n/2(n为偶数),SG(n)=SG(n/2)(n为奇数)#include <iostream>#include <string.h>using namespace std;#define maxn 100int SG[maxn];int vis[maxn];int main(){ SG[1]=0; for(int i=2;i<=30;i++) { memset(vis,0,sizeof(vis)); for(int j=1;j*2<=i;j++)vis[SG[i-j]]=1; for(int j=0;;j++) if(!vis[j]) { SG[i]=j; break; } cout<<SG[i]<<endl; } return 0;}*/
0 0
- 博弈问题,sg函数初步学习例题解析
- 博弈问题及SG函数
- 博弈问题及SG函数
- 博弈问题及SG函数
- 博弈问题及SG函数
- 博弈问题及SG函数
- 博弈问题及SG函数
- 博弈问题及SG函数
- 博弈问题外挂-SG函数
- 博弈问题之SG函数博弈小结
- 博弈问题及SG函数(经典)
- 尼姆博弈问题+sg函数
- 博弈问题通解(SG函数)
- SG函数与组合博弈问题
- 博弈学习(一) NIM + SG函数
- 学习笔记--博弈组合-SG函数
- 博弈问题的初步学习
- SG函数 博弈
- 织梦模板修改路径
- 通过storyboard id获得viewcontroller
- 【Maven】仓库 ——repository
- JDK安装
- queue
- 博弈问题,sg函数初步学习例题解析
- onActivityResult传值的使用
- 面向对象的一点小的收获
- hello word
- hdu 3392(滚动数组优化dp)
- 历经4个月的奋战,终于找到一本好书
- C#基础学习(一)
- Linux学习笔记(十二)软件安装
- 最小割理论