标签:before lin mes course The nic == 存在 names
InputThe first line contains a single integer T, indicating the number of test cases.
Each test case begins with an integer N, indicating the number of heaps. Then N integer Ai follows, indicating the number of each heap.
[Technical Specification]
1. 1 <= T <= 100
2. 1 <= N <= 1 000
3. 1 <= Ai <= 1 000 000 000 000OutputFor each test case, output “Yes” if the second player can win by moving some (can be zero) heaps out, otherwise “No”.Sample Input
3 1 2 3 2 2 2 5 1 2 3 4 5
Sample Output
No Yes Yes
Hint
For the third test case, the second player can move heaps with 4 and 5 objects out, so the nim-sum of the sizes of the left heaps is 1?2?3 = 0.
把上一题的S改为0即可。依然占位。
#include<bits/stdc++.h> #define lowbit(x) (x&-x) #define ll long long #define rep(i,a,b) for(int i=a;i<=b;i++) using namespace std; const int maxn=10100; ll a[maxn],x1[maxn],x2[maxn],c[65]; int main() { int T,N,cnt; scanf("%d",&T); while(T--){ scanf("%d",&N); rep(i,1,N) scanf("%lld",&a[i]); if(N==1) puts("No"); else { ll S=0; cnt=0; rep(i,0,42) c[i]=0; rep(i,1,N){ rep(j,1,cnt){ if(a[i]&lowbit(c[j])) a[i]^=c[j]; }if(a[i]!=0) c[++cnt]=a[i]; } rep(i,1,cnt) if(S&lowbit(c[i])) S^=c[i]; if(S!=0||cnt==N) puts("No"); else puts("Yes"); } } return 0; }
HDU - 5088: Revenge of Nim II (问是否存在子集的异或为0)
标签:before lin mes course The nic == 存在 names
原文地址:https://www.cnblogs.com/hua-dong/p/9735927.html