标签:case rate std ons \n tput 异或 others rip
Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)
Total Submission(s): 4939 Accepted Submission(s): 2724
题意:有n堆苹果,每堆有数个。两个人轮流取,每次至少取一个,取走最后一个的算输。
题解:是反nim博弈。先手必胜的两个结论:(1)每堆苹果都只有一个,而且有偶数堆(异或和为0),那么先手必胜。(2)至少有一堆苹果中个数超过一个,那么异或和不为0,先手必胜。
https://www.cnblogs.com/SilverNebula/p/5658629.html 顶
1 #include<bits/stdc++.h> 2 using namespace std; 3 int main() { 4 int n; 5 while(~scanf("%d",&n)) 6 { 7 int ans=0,ai,num=0; 8 for(int i=0;i<n;i++) 9 { 10 scanf("%d",&ai); 11 ans^=ai; 12 if(ai>1)num=1; 13 } 14 if(num) 15 { 16 if(ans==0)printf("No\n"); 17 else printf("Yes\n"); 18 } 19 else 20 { 21 if(ans==0)printf("Yes\n"); 22 else printf("No\n"); 23 } 24 } 25 return 0; 26 }
标签:case rate std ons \n tput 异或 others rip
原文地址:https://www.cnblogs.com/fqfzs/p/9909351.html