首页 > 代码库 > Alice and Bob——hdu4111

Alice and Bob——hdu4111

该题也能在codevs上找到,ID3153

这是一道经典的博弈论的题

有两种做法,一个就是用sg函数,另一个嘛

看下面就知道了。

#include<iostream>
#include<cstdio>
#include<algorithm>
#include<cstring>
using namespace std;
inline int read(){
    int t=1,num=0;char c=getchar();
    while(c>9||c<0){if(c==-)t=-1;c=getchar();}
    while(c>=0&&c<=9){num=num*10+c-0;c=getchar();}
    return num*t;
}
int T,n,a[51],s,sum,h;
int hehe(){
    if(s==n)return n%3;
    if(s==n-1&&h==1)return s%3;
    if(sum&1)return 1;
    return s&1;
}
int main()
{
    T=read();
    for(int j=1;j<=T;j++){
        n=read();s=h=0;sum=n-1;
        for(int i=1;i<=n;i++){
            a[i]=read();
            if(a[i]==1)s++;
            if(a[i]==2)h++;
            sum+=a[i];
        }
        printf("Case #%d: ",j);
        int t=hehe();
        if(t)puts("Alice");
        else puts("Bob");
    }
    return 0;
}

本文由Yzyet编写,网址为www.cnblogs.com/Yzyet。非Yzyet同意,禁止转载,侵权者必究。

Alice and Bob——hdu4111