G. Game of Cards 题解(巴什博弈变形)

题目链接

题目思路

三种操作

1 减少一个0

2 减少两个1加一个2

3 减少一个1 和一个2

那么每次对手都能使得\(c0-2\)或者\(c1-3\)

根据巴士博弈的思想那么就直接取模,然后爆搜

注意特判只有\(C0\)的情况

代码

#include<bits/stdc++.h>
#define fi first
#define se second
#define debug cout<<"I AM HERE"<<endl;
using namespace std;
typedef pair<int,int> pii;
typedef long long ll;
const ll INF=0x3f3f3f3f3f3f3f3f;
const int maxn=20+5,inf=0x3f3f3f3f,mod=998244353,lim=300;
const double eps=1e-6;
int a,b,c,d;
int tot;
int ans;
int dfs(int a,int b,int c,int d){
    bool flag=1;
    int ans=1;
    if(a>=1){
        ans&=dfs(a-1,b,c,d);
        flag=0;
    }
    if(b>=2){
        ans&=dfs(a,b-2,c+1,d);
        flag=0;
    }
    if(b>0&&c>0){
        flag=0;
        ans&=dfs(a,b-1,c-1,d+1);
    }
    if(flag){
        return 0;
    }
    ans=(!ans);
    return ans;
}
signed main(){
    int _;scanf("%d",&_);
    while(_--){
        scanf("%d%d%d%d",&a,&b,&c,&d);
        if(b==0&&c==0&&d==0){
            if(a==0){
                ans=0;
            }else if(a%2==0){
                ans=1;
            }else{
                ans=0;
            }
        }else{
            ans=dfs(a%2,b%3,c,d);
        }
        printf("Case #%d: ",++tot);
        printf(!ans?"Horse\n":"Rabbit\n");
    }
    return 0;
}

posted @ 2021-09-12 17:06  hunxuewangzi  阅读(106)  评论(0编辑  收藏  举报