HDU 3951 Coin Game (博弈)

来源:互联网 发布:淘宝店客服怎么设置 编辑:程序博客网 时间:2024/06/04 19:47
又是一道博大精深的博弈题目。
已经说了 巴什博弈,威佐夫博弈,尼姆博弈,SG函数,找规律的博弈,这次和找规律有点类似——对称博弈。
一般都是圆啊方啊什么的。

对于这道题而言,可以有三种情况:
①k等于1    一次最多只能拿1个(每堆只有一个),那就是看奇偶了。
②n≤k  这种情况,那肯定先拿的赢。
③ 这条就是对称博弈了, 除了上述两种情况外的情况(n>k && k!=1)
    这时候,无论你第一个人拿什么,怎么拿,后手的人完全可以在第一个人拿的对称的地方做同样的事情。
这样,后手就一定会取得胜利,因为最后一步是后手走的。

第三条自己在本上画一画就不难发现了。

恩,博弈论,暂时就先到这里了。。。。
#include<stdio.h>int main(){    int t,i,n,k;    scanf("%d",&t);    for(i=1;i<=t;i++){        scanf("%d%d",&n,&k);        printf("Case %d: ",i);        if(k==1){            if(n&1) printf("first\n");            else printf("second\n");        }        else if(n<=k) printf("first\n");        else printf("second\n");    }    return 0;}


0 0
原创粉丝点击