目录
6.公平组合博弈(Impartial Combinatorial Games - ICG)
1.总述
P-position为必败态,N-position为必胜态
能到必败态的状态为必胜态,只能到必胜态的状态为必败态。
做题思路:
①手动或机器打表找规律
②打SG表(ICG类型)
③记忆化搜索(状态数有限)
注意:不要抱有记忆化搜索会少搜一些状态的侥幸心理
2.巴什博弈
问题模型:只有一堆n个物品,两个人轮流从这堆物品中取物,规定每次至少取一个,最多取m个,最后取光者得胜。
模型归纳:一堆n个物品,每次取一堆中的有限个,游戏次数有限。
思路:设出最后的状态为N态或P态,由N、P态之间转换关系顺推或倒推,最后求出所求状态
例题:
悼念512汶川大地震遇难同胞——选拔志愿者 HDU - 2188
#include<bits/stdc++.h>
using namespace std;
/*
由题意可设n为P态,则n-1,n-2,...,n-m均为N态,n-m-1为P态
由此可观察出,当 n是m+1的倍数时,则可推出0是P态,否则为N态
*/
int main()
{
int Case;
scanf("%d",&Case);
for(int o=1;o<=Case;o++)
{
int n,m;
scanf("%d%d",&n,&m);
if(n%(m+1)==0)printf("Rabbit\n");
else printf("Grass\n");
}
return 0;
}
3.威佐夫博弈
问题模型:有两堆各若干个物品,两个人轮流从某一堆或同时从两堆中取同样多的物品,规定每次至少取一个,多者不限,最后取光者得胜。
模型归纳:两堆若干个物品,每次取一堆中的若干个或两堆中的相同个,游戏次数有限
思路:奇异状态必败,否则必胜
关于奇异状态:https://blog.csdn.net/qq_41311604/article/details/79980882
检验威佐夫模型的小程序:
#inclu