一个小游戏。挺好玩的。
http://acm.pku.edu.cn/JudgeOnline/problem?id=1063
flip 和 shift 两种操作结合起来可以将任意的黑子向任意方向移动偶数步。
分两种情况:
1.有奇数个槽时:
位于奇数位置的黑子也可以移动到偶数位置中,因为可以两个方向移动。
所以可以将任意黑子移动到任意位置。
所以无论什么情况都能达到goal
2.有偶数个槽时:
位于奇数位置的黑子永远位于奇数位置
位于偶数位置的黑子永远位于偶数位置
所以奇数位置的黑子和偶数位置的黑子相差1的时候可以达到goal
#include <stdio.h>
#include <math.h>
int main()
{
int t, n, i, j, arr[2];
freopen("e:\\test\\in.txt", "r", stdin);
scanf("%d", &t);
while (t--) {
scanf("%d", &n);
arr[0] = arr[1] = 0;
for (i = 0; i < n; i++) {
scanf("%d", &j);
arr[i & 1] += j;
}
printf("%s\n", (n & 1) || abs(arr[0] - arr[1]) <= 1 ? "YES" : "NO");
}
return 0;
}