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 }
时间: 2024-10-11 22:22:13