![](https://img-blog.csdnimg.cn/20201014180756927.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
博弈:Nim游戏
skajre
这个作者很懒,什么都没留下…
展开
-
HDU 1849 Rabbit and Grass(Nim game)
#include using namespace std; int main() { int n; while(cin>>n) { if(n==0) break; int k,ans=0; for(int i=0;i>k;ans^=k;} if(ans==0) cout<<"Grass Win!"<<endl;原创 2016-12-21 16:04:01 · 198 阅读 · 0 评论 -
HDU 5996 dingyeye loves stone(Nim 变形)
对数深度为偶数的节点,不需要考虑,因为这是必败态,留给对手,每次对手动,跟进就可以了。 对于奇数深度的节点是正常比赛的关键,并且这些节点符合Nim博弈。 #include using namespace std; const int maxn=1e5+5; int dep[maxn]; int main() { int t; scanf("%d",&t); while(原创 2016-12-21 20:56:59 · 218 阅读 · 0 评论 -
HDU 1536 S-Nim(sg函数)
这题两个坑点,g要排序,这个不难想。 最坑的是Hash数组要换成bool型,int就TLE到死吧。 #include #include #include using namespace std; const int maxn=1e4+5; int sg[maxn],g[maxn]; bool Hash[maxn]; int k; void cal_sg() { memset(sg,fa原创 2016-12-21 21:42:50 · 196 阅读 · 0 评论 -
HDU 1850 Being a Good Boy in Spring Festival(Nim game)
#include using namespace std; const int maxn=100+5; int N[maxn]; int main() { int m; while(scanf("%d",&m)&&m) { int ans=0; for(int i=0;i<m;i++) {scanf("%d",&N[i]);ans=ans^N原创 2016-12-19 20:49:38 · 155 阅读 · 0 评论 -
尼姆博弈(Nimm's Game)
尼姆博弈(Nimm's Game) 题型 尼姆博弈模型,大致上是这样的: 有3堆各若干个物品,两个人轮流从某一堆取任意多的物品,规定每次至少取1个,多者不限,最后取光者得胜。 分析 1、首先自己想一下,就会发现只要最后剩两堆物品一样多(不为零),第三堆为零,那面对这种局势的一方就必败 那我们用(a,b,c)表示某种局势,首先(0,0,0)显然是必败态,无论谁面对(原创 2016-12-19 20:50:08 · 236 阅读 · 0 评论 -
HDU 2176 取(m堆)石子游戏(Nim game)
#include using namespace std; const int maxn=200000+5; int N[maxn]; int main() { int m; while(cin>>m) { if(m==0) break; int ans=0; for(int i=0;i>N[i];ans^=N[i];}原创 2016-12-19 21:01:13 · 307 阅读 · 0 评论 -
HDU 1907 John(Nim game)
这题需要特判一下, 如果所有堆都为孤独堆,那么看n的奇偶性来判断胜负。 其他情况普通的Nim判断就可以了。#include using namespace std; int main() { int t; cin>>t; while(t--) { int n; cin>>n; int x,ans=0;原创 2016-12-19 21:18:23 · 175 阅读 · 0 评论 -
HDU 1730 Northcott Game(Nim game)
把黑子与白子之间的距离当作每一堆石子的个数,那么只要第一次看一下异或后的值ans是否为0即可判断是否必败还是必胜了。 因为ans不等于0,那么先手走完一部后,后手面对的局面就是必败态了,后手移动以后,那一堆的石子增加了,那么先手只要使那一堆石子恢复成必败态即可。 ans等于0的情况也类似。#include #include using namespace std; int main() {原创 2016-12-20 10:16:22 · 213 阅读 · 0 评论