2022杭电第五场

1010 Bragging Dice

题意

YahAHa和Peanut各掷一次骰子,YahAHa先手,进行声明;Peanut则可以挑战,如果符合声明,则YahAHa胜利,反之。Peanut也可以继续声明,但声明的骰子数和点数有一个要比之前的声明大。 另外有三条规则:

如果没有人声明“有x个1点的筛子”,那么1点可认为是任意点数

如果一个杯子中所有筛子点数相同,就认为杯子中还有一个同点数的筛子

如果一个杯子中筛子的点数各不相同,则认为各个点数的筛子个数为0

优先满足第三条规则,两个玩家都知道两个杯子中每个筛子的点数。 问在最优策略下YahAHa是否能够获胜。

思路

除杯中的筛子点数全部不同,YahAHa必胜。

代码


#include <bits/stdc++.h>
using namespace std;
const int maxn=5e5+5;
typedef long long ll;
const int mod=998244353;

inline int iread()
{
    register ll x=0,f=1;
    char c=getchar();
    while(c<'0'||c>'9')
    {
        if(c=='-') f=-1;
        c=getchar();
    }
    while(c>='0'&&c<='9') 
    {
        x=(x<<3)+(x<<1)+(c^48); //等价于x*10+c-48,使用位运算加速
        c=getchar();
    }
    return x*f;
}//快读

int main(){
	int t;
//	scanf("%d",&t);
	t=iread();
	while(t--){
		int n,aa[10],bb[10],a,b;
		cin>>n;
		memset(aa,0,sizeof(aa));
		memset(bb,0,sizeof(bb));
		for(int i=1;i<=n;i++){
			a=iread();
//			cin>>a;
			aa[a]++;
		}
		for(int i=1;i<=n;i++){
			b=iread();
			bb[b]++;
		}
		if(n<7){
			int f=0;
			for(int i=1;i<=6;i++){
				if(aa[i]>1||bb[i]>1){
					f=1;
					break;
				}
			}
			if(f==1){
				puts("Win!");
			}else{
				puts("Just a game of chance.");
			}
		}else{
			puts("Win!");
		}
	} 
} 
全部评论

相关推荐

点赞 收藏 评论
分享
牛客网
牛客企业服务