谁才是最强战舰!-From 南京理工大学第八届程序设计大赛(校外镜像),博弈~~
2024-09-01 07:08:46
谁才是最强战舰!
Time Limit: 1000MS
Memory Limit: 65536KB
Description
依阿华来到镇守府的第一件事情,就是找大和solo!然而这并不是什么好消息,说不定,镇守府,甚至佐伯湾就这么消失了。。。于是,提督君想了一个简单的游戏,来分出她们的胜负。游戏规则如下:这里有N堆石子,每堆石子有a[i](1<=i<=N)个,每人轮流从其中的某一堆石子中拿出任意个石子(只能在其中一堆拿,不能不拿),大和先手,谁拿出了最后一个石子,谁输。若大和必胜,输出“Yamato_Saikou!”,若依阿华必胜,输出“Meidikeji_Shijiediyi!”,若两边都无法必胜,输出“Sayonara_Konosekai!”.
Input
第一行输入一个正整数T(1 <= T <= 1000),表示有T组测试数据。对于每组测试数据:第一行一个正整数,N(N<=1000),表示有N堆石子。第二行N个整数a[i](1<=a[i]<=1000),表示每堆石子的数量。
Output
若大和必胜,输出“Yamato_Saikou!”,若依阿华必胜,输出“Meidikeji_Shijiediyi!”,若两边都无法必胜,输出“Sayonara_Konosekai!”.
Sample Input
3
1
5
2
1 231 1 1
Sample Output
Yamato_Saikou!
Yamato_Saikou!
Meidikeji_Shijiediyi!
有幸参加南理工的校赛-校外镜像赛,然而内心是崩溃的,做出两个水题后就再也A不出一道题了,当时推这个题推了好久,看到好多人都过了,感觉是什么规律题,然后举样例分析,发现一点点规律,然而思路没有,条理不清晰,最终还是WA了几遍,后来看题解才发现要用异或判断状态,可怜我们这种大一菜鸟神马都不造,,还是好好学学博弈吧~~
题解:
所有的状态都在上面了,下面是AC代码:
#include<cstdio>
#include<cstring>
#include<cstdlib>
#include<iostream>
#include<algorithm>
#include<cmath>
using namespace std;
const int N=1000+10;
int a[N];
int main()
{
int t,n,i,j,x;
scanf("%d",&t);
while(t--)
{
int f=0;//标记,等于1时代表前者输,等于2时代表后者输;
x=j=0;
scanf("%d",&n);
for(i=0; i<n; i++)
{
scanf("%d",&a[i]);
x^=a[i];
if(a[i]>=2)
j++;
}
if(x!=0)
{
if(j==0)
f=1;
else if(j>=1)
f=2;
}
else
{
if(j==0)
f=2;
else if(j>=2)
f=1;
}
if(f==1)
printf("Meidikeji_Shijiediyi!\n");
else if(f==2)
printf("Yamato_Saikou!\n");
else
printf("Sayonara_Konosekai!\n");
}
return 0;
}
最新文章
- Block使用
- 用Window Authentication的方式去连接SQLServer
- Android 源码获取-----在Windows环境下通过Git得到Android源代码
- BZOJ3746 : [POI2015]Czarnoksiężnicy okrągłego stołu
- ios基础知识
- light oj 1019【最短路模板】
- 安装XCode导致mac无法正常开机怎么办
- ParNew收集器
- Linux下一个Nginx安装步骤
- NuGet 自定义配置
- error: stray &#39;\357&#39; in program编程出错的总结
- 【java线程系列】java线程系列之线程间的交互wait()/notify()/notifyAll()及生产者与消费者模型
- H5拖动实现代码
- gentoo emacs 中文输入法 呼出
- Android WIFI的基本操作
- Linux用户密码策略
- 新装的Delphi XE10 空白的安卓程序编译报错 F1027 Unit not found: &#39;System.pas&#39;
- SICK LMS111激光雷达的使用
- pycharm 设置文件编码的位置:Editor-->;File Encodings
- Linux下通过命令行mail发送e-mail