hdu 4994 Revenge of Nim 博弈

来源:互联网 发布:债券逆回购 知乎 编辑:程序博客网 时间:2024/05/16 07:14

题目链接:点击打开链接

题意:有n堆石头,Alice和bob每人每次可以从一堆里面拿n个石头n>0(从左到右),最后没有拿的人输,判断是不是先手赢。

思路:判断谁有主动,肯定是第一个拿到多余1个石头的那一堆主动,就是判断谁能拿到多与1的那一堆。

代码:

#include <cstdio>#include <algorithm>#include <cstring>using namespace std;int main(){    int data[1010],T,n,cnt;   // freopen("data.in","r",stdin);    scanf("%d",&T);    while (T--){        scanf("%d",&n);        for(int i=0;i<n;i++) scanf("%d",data+i);        if(data[0]>1||n==1)            puts("Yes");        else {            cnt=0;            for(int i=0;data[i]==1&&i<n-1;i++){                cnt++;            }            if(cnt&1){                puts("No");            }            else {                puts("Yes");            }        }    }    return 0;}


0 0
原创粉丝点击