码迷,mamicode.com
首页 > 其他好文 > 详细

ACM模板——简单博弈

时间:2019-04-04 20:20:49      阅读:162      评论:0      收藏:0      [点我收藏+]

标签:min   博弈   bool   size   lse   _for   alt   gif   splay   

巴什博弈:只有一堆n个物品,两个人轮流从这堆物品中取物, 规定每次至少取一个,最多取m个。最后取光者得胜。

技术图片
if(n%(m+1)) first win
else second win
巴什博弈

变种:取光者输

技术图片
if(!(n-1)%(m+1)) second win
else first win
巴什博弈变种

威佐夫博弈:有两堆各若干个物品,两个人轮流从任一堆取至少一个或同时从两堆中取同样多的物品,规定每次至少取一个,多者不限,最后取光者得胜。

技术图片
double r = (sqrt(5.0)+1)/2;
int d = abs(a-b)*r;
if(d!=min(a,b)) first win
else second win
威佐夫博弈

尼姆博弈:n堆物品,两人轮流取,每次取某堆中不少于1个,最后取完者胜。

技术图片
int res = 0;
_for(i,1,n+1)
    res = res ^ a[i];
if(res) first win
else second win
尼姆博弈
技术图片
int f[N],SG[N];
bool S[M];
void getSG(int n)
{
    memset(SG,0,sizeof(SG));
    for(int i=1;i<=n;i++)
    {
        memset(S,false,sizeof(S));
        for(int j=1;f[j]<=i&&j<M;j++)
        {
             S[SG[i-f[j]]]=true;
        }
        while(S[SG[i]]) SG[i]++;
    }
}
SG模板

 

ACM模板——简单博弈

标签:min   博弈   bool   size   lse   _for   alt   gif   splay   

原文地址:https://www.cnblogs.com/Asurudo/p/10656713.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!