西南民族大学第十届校赛(同步赛)(H题——Ricky’s RealDan’s Ricky)

版权声明:本人原创,转载请注明出处! https://blog.csdn.net/qq_29117927/article/details/85536922

题目描述
The 2019 is coming!Ricky 和 RealDan为了庆祝2018一年的成果,准备去大吃一顿,然而 Ricky 想吃火锅, RealDan 想吃海鲜。为了解决吃什么的难题, 他们向聪明的神秘人(出题人)寻求帮助,神秘人则给他们出了这样一个问题:
现在有 n 个娃娃机,第i(1 <= i <= n) 个娃娃机中有 a[i] 个娃娃。
规则如下:
Ricky 和 RealDan 轮流抓娃娃,
Ricky 每轮只能从其中一个娃娃机中抓走偶数个娃娃。
RealDan 每轮只能从其中一个娃娃机中抓走奇数个娃娃。
每人每轮至少抓走一个娃娃(他们都超级厉害), Ricky 先开始抓。
他们在神秘人的教导下,都已经变得非常聪明。最后谁抓不了娃娃,谁就被视为 loser,并且还要把自己抓到的娃娃送给对方,loser也必须去Winner喜欢的地方吃饭。
现在他们找到你,想让你看一下他们究竟谁可以赢。
Note: All the best wishes give Ricky and RealDan by their old friend ~

输入描述:
第一行一个t,表示t组数据。
每组数据有两行:
第一行一个n(1 <= n <= 100000)代表n个娃娃机
下一行有n个数字,代表每一个娃娃机中的娃娃数量a[i] (1 <= a[i] <= 1e9)

输出描述:
如果最后Ricky获胜,则输出“Ricky is Winner”(不包括双引号),反之则输出“RealDan is Winner”(不包括双引号)。

输入
1
2
1 2

输出
RealDan is Winner

这一道博弈论的题,读题我们可知,他不属于我们常见的有固定模板的博弈论题,对于该题我们应该自己多写几组测试数据分析得出如下结论:
1.当n=1时,若n为偶数则Ricky赢,反之则RealDan赢;
2.当n>1时,不管怎么样都是RealDan赢;
根据以上两种情况编写代码即可。

#include<iostream>
using namespace std;
int main()
{
	long long int a[100005],n,t,i;
	cin>>t;
	while(t--)
	{
		cin>>n;
		for(i=0;i<n;i++)
		{
			cin>>a[i];
		}
		if(n==1)
		{
			if(a[0]%2==0)
				cout<<"Ricky is Winner";
			else
				cout<<"RealDan is Winner"; 
		}
		else
		{
			cout<<"RealDan is Winner";
		}
		cout<<endl;
	}
}

猜你喜欢

转载自blog.csdn.net/qq_29117927/article/details/85536922