码迷,mamicode.com
首页 > 其他好文 > 详细

南京理工大学第八届程序设计大赛(校外镜像) H 谁才是最强战舰!

时间:2016-04-18 13:23:10      阅读:150      评论:0      收藏:0      [点我收藏+]

标签:

 1 #include<iostream>
 2 #include<cstdio>
 3 #include<cstring>
 4 #include<vector>
 5 #include<algorithm>
 6 using namespace std;
 7 typedef long long ll;
 8 
 9 /*
10 官方题解: 
11 充裕堆: 石子数量大于等于2    =1表示孤单堆 
12 
13 奇异局势,所有堆的 xor和 ==0.  
14 
15 非奇异局势:    S0,    充裕堆为0;
16                S1,     充裕堆为1
17                S2,    充裕堆>=2    
18 
19 奇异局势;      T0, 充裕堆为0; 
20                 T2,  充裕堆为>=2; 
21                    ps:充裕堆为1:  所有堆 xor != 0
22 状态转移 
23     S0,必败,T0必胜
24     S1,必胜  ----->  S1->S0即可 
25 
26 *****
27 S2必胜,T2必败。  
28 1)T2只能转移到S1 和 S2    ----->  亦或状态必定改变 
29 2)若T2转移到S1 则T2败,若T2转移到S2,S2只需要转回到T2即可。所以S2胜,T2败。  
30                 奇异局势下: 不会出现转换不回的情况:
31                         例如 2 3(不是奇异局势) --->  2 2 ----->     
32             
33 
34 所以:  
35 必胜态:T0,S1,S2  
36 必败态:S0,T2  
37 
38 只要特判 充裕堆为0的清理 
39 */
40 int main(){
41 
42     int T;
43     scanf("%d",&T);
44     while(T--){
45         int n,tmp, x = 0;
46         bool f = true;
47         scanf("%d",&n);
48         for(int i = 0 ; i < n ; i ++){
49             scanf("%d",&tmp);
50             x ^= tmp;
51             if(tmp != 1) f = false;
52         }
53         if(f){
54             if(n&1) puts("Meidikeji_Shijiediyi!");
55             else puts("Yamato_Saikou!");
56         }else{
57             if(x) puts("Yamato_Saikou!");
58             else puts("Meidikeji_Shijiediyi!");
59         }
60         
61     }
62     
63 }

 

南京理工大学第八届程序设计大赛(校外镜像) H 谁才是最强战舰!

标签:

原文地址:http://www.cnblogs.com/zstu-jack/p/5403998.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!