思路:
跟hdu1907一样的,都是尼姆博弈的裸应用,把每组苹果都看作一堆待取的物品,则一次只能从一个堆上取若干个(不少于1个).取最后一个苹果的人输掉。
唯一不同的地方是对于一个堆,某人取过以后可以变成两个堆,例如题目中所说的{@@@}--->{@ @};但这个并不影响结果,因为对于任意的T2状态不管怎么取,都是只能变作S1状态和S2状态。代码几乎和1907的一模一样。
代码如下:
int main()
{
int n, x, cnt, ans = 0;
while(~scanf("%d", &n))
{
ans = 0;
cnt = 0;
for(int i = 0; i < n; ++i)
{
scanf("%d", &x);
ans ^= x;
cnt += (x>1);
}
if((ans==0&&cnt==0)||(ans!=0&&cnt==1)||(ans!=0&&cnt>=2)) puts("Yes");
else puts("No");
}
return 0;
}