解题报告:POJ2234 Matcher Game
原题链接:POJ2234
解析:推理证明了半个多小时,证明出来了一个做法,提交才发觉题意理解错了。他并不是顺序取每一堆,而是随便取一堆,于是虽然我推出来了一种做法,但是却不是本题解法。本题解法用到二进制,以我目前层次是肯定想不到这种解法的。我们可以定义一种状态:平衡态,即每个堆数量二进制按位相加为偶数即为平衡态。而平衡态下可以证明先手必输,故可解答案。具体请见《算法设计编程实验》——吴永辉
错误报告:
- 理解错题意
代码示例:
#include<iostream>
#include<cstdio>
using namespace std;
int main()
{
int m;
while(~scanf("%d",&m)){
int ans = 0;
int x;
for(int i = 0;i < m;i++){
scanf("%d",&x);
ans = ans^x;
}
if(ans) puts("Yes");
else puts("No");
}
return 0;
}