题目大意:略。
解题思路:Num和性质。
#include <cstdio>
#include <cstring>
#include <algorithm>
using namespace std;
const int maxn = 200005;
int n, sg, arr[maxn];
int main () {
while (scanf("%d", &n) == 1 && n) {
sg = 0;
for (int i = 0; i < n; i++) {
scanf("%d", &arr[i]);
sg ^= arr[i];
}
if (sg) {
printf("Yes\n");
for (int i = 0; i < n; i++) {
int tmp = sg ^ arr[i];
if (arr[i] >= tmp)
printf("%d %d\n", arr[i], tmp);
}
} else
printf("No\n");
}
return 0;
}
本文解析了HDU2176取(m堆)石子游戏的问题,并提供了一个基于Num和性质的解决方案。通过使用XOR操作来确定游戏的状态,进而判断先手是否有必胜策略。
3709

被折叠的 条评论
为什么被折叠?



