hdu 2509 - Be the Winner(简单博弈)

来源:互联网 发布:软件代理销售合同 编辑:程序博客网 时间:2024/04/29 23:57

思路:

    跟hdu1907一样的,都是尼姆博弈的裸应用,把每组苹果都看作一堆待取的物品,则一次只能从一个堆上取若干个(不少于1个).取最后一个苹果的人输掉。

    唯一不同的地方是对于一个堆,某人取过以后可以变成两个堆,例如题目中所说的{@@@}--->{@  @};但这个并不影响结果,因为对于任意的T2状态不管怎么取,都是只能变作S1状态和S2状态。代码几乎和1907的一模一样。

代码如下:

int main(){    int n, x, cnt, ans = 0;    while(~scanf("%d", &n))    {        ans = 0;        cnt = 0;        for(int i = 0; i < n; ++i)        {            scanf("%d", &x);            ans ^= x;            cnt += (x>1);        }        if((ans==0&&cnt==0)||(ans!=0&&cnt==1)||(ans!=0&&cnt>=2)) puts("Yes");        else puts("No");    }    return 0;}


原创粉丝点击