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;
}
不摆烂了,写题