bzoj 3759 Hungergame 博弈论+线性基
2017-07-30 20:35
141 查看
和nim游戏类似
易证必败状态为:当前打开的箱子中石子异或和为0,没打开的箱子中不存在一个子集满足异或和为0
因为先手无论是取石子还是开箱子,后手都可以通过取石子来使状态变回原状态
所以只需判定是否有子集异或和等于零即可
#include<cstdio>
#include<cstring>
#include<iostream>
#include<algorithm>
#include<cmath>
using namespace std;
int T,n,a[25];
bool work(){
int i,j,k=0;
for(i=1<<30;i;i>>=1){
for(j=k+1;j<=n;j++)
if(a[j]&i) break;
if(j==n+1) continue;
swap(a[++k],a[j]);
for(j=1;j<=n;j++)
if(j!=k&&(a[j]&i)) a[j]^=a[k];
}
return k!=n;//k!=n说明有某堆在过程中被异或为0
}
int main()
{
freopen("hunger.in","r",stdin);
freopen("hunger.out","w",stdout);
scanf("%d",&T);
while(T--){
scanf("%d",&n);
for(int i=1;i<=n;i++)
scanf("%d",&a[i]);
if(work()) printf("Yes\n");
else printf("No\n");
}
return 0;
}
易证必败状态为:当前打开的箱子中石子异或和为0,没打开的箱子中不存在一个子集满足异或和为0
因为先手无论是取石子还是开箱子,后手都可以通过取石子来使状态变回原状态
所以只需判定是否有子集异或和等于零即可
#include<cstdio>
#include<cstring>
#include<iostream>
#include<algorithm>
#include<cmath>
using namespace std;
int T,n,a[25];
bool work(){
int i,j,k=0;
for(i=1<<30;i;i>>=1){
for(j=k+1;j<=n;j++)
if(a[j]&i) break;
if(j==n+1) continue;
swap(a[++k],a[j]);
for(j=1;j<=n;j++)
if(j!=k&&(a[j]&i)) a[j]^=a[k];
}
return k!=n;//k!=n说明有某堆在过程中被异或为0
}
int main()
{
freopen("hunger.in","r",stdin);
freopen("hunger.out","w",stdout);
scanf("%d",&T);
while(T--){
scanf("%d",&n);
for(int i=1;i<=n;i++)
scanf("%d",&a[i]);
if(work()) printf("Yes\n");
else printf("No\n");
}
return 0;
}
相关文章推荐
- bzoj 3759 Hungergame 博弈论+线性基
- BZOJ.3759.Hungergame(博弈论 线性基)
- [博弈+线性基] BZOJ3759: Hungergame
- 【BZOJ3759】【博弈论】17.1.24 T1 Hungergame 题解
- BZOJ 3759 Hungergame 博弈论+高斯消元
- [BZOJ 3759]Hungergame
- BZOJ 3105 新Nim游戏(博弈论+线性基)
- BZOJ 3759 Hungergame
- BZOJ3759: Hungergame 博弈论+线性基
- 【bzoj3759】【hungergame】【线性基+博弈论】
- BZOJ.3105.[CQOI2013]新Nim游戏(线性基 贪心 博弈论)
- 【 bzoj 3759 】 Hungergame
- bzoj 3105: [cqoi2013]新Nim游戏 博弈论+贪心(拟阵)+线性基
- BZOJ_P2460 [BeiJing2011]元素(贪心+线性基)
- BZOJ1022(SHOI2008)[小约翰的游戏John]--博弈论(反Nim游戏)
- 【BZOJ2460】元素(贪心,线性基)
- BZOJ 2844 高斯消元 线性基
- [Hnoi 2014] bzoj3576 江南乐 [博弈论]
- bzoj 3569: DZY Loves Chinese II dfs树+线性基【神题】
- BZOJ2115 线性基 对于异或环的处理