Good Luck in CET-4 Everybody! [HDU - 1847]

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/z591826160/article/details/83658665

Good Luck in CET-4 Everybody! [HDU - 1847]

题面

在这里插入图片描述

思路

看到数据范围能刷SG表,开题先推了一会后感觉可能是有循环节的。
刷完SG表之后观察规律,貌似 n % 3 = 0 n\%3=0 的情况都是先手必败,其余先手必胜
拿到结论之后,发现和bash博弈很像。每次都留给对面3的倍数的数即可。

代码

放一下刷SG表的代码吧,结论的放了也没什么意义

int const maxn=2000;
int sg[maxn];
int dfs(int u){
    if(sg[u]!=-1)return sg[u];
    bool get0=true;
    for(int i=0;i<11;i++){
        int now = 1<<i;
        if(now>u)break;
        get0&=dfs(u-now);
    }
    return sg[u]=!get0;
}
int main(){
    none(sg);
    int now=1;
    while(now<maxn){
        sg[now]=1;
        now<<=1;
    }
    sg[0]=0;
    dfs(1000);
    for(int i=0;i<10;i++)
        cout<<sg[i]<<endl;
}

猜你喜欢

转载自blog.csdn.net/z591826160/article/details/83658665