BZOJ 1299: [LLH邀请赛]巧克力棒 [组合游戏]

每次一人可以从盒子里取出若干条巧克力棒,或是将一根取出的巧克力棒吃掉正整数长度。


Nim游戏多了一个决策:拿出一些石堆

显然只要给对方构造异或和为0的子集就行了

暴枚子集...

#include <iostream>
#include <cstdio>
#include <cstring>
#include <algorithm>
#include <cmath>
using namespace std;
typedef long long ll;
const int N=;
inline int read(){
char c=getchar();int x=,f=;
while(c<''||c>''){if(c=='-')f=-;c=getchar();}
while(c>=''&&c<=''){x=x*+c-'';c=getchar();}
return x*f;
}
int n,a[N];
bool solve(){
int All=<<n;
for(int s=;s<All;s++){
int sg=;
for(int i=;i<n;i++) if((<<i)&s) sg^=a[i];
if(!sg) return true;
}
return false;
}
int main(){
//freopen("in","r",stdin);
int T=;
while(T--){
n=read();
for(int i=;i<n;i++) a[i]=read();
puts(solve() ? "NO" : "YES");
}
}
上一篇:BZOJ.1299.[LLH邀请赛]巧克力棒(博弈论 Nim)


下一篇:BZOJ1299: [LLH邀请赛]巧克力棒(Nim游戏)