【BZOJ3759】【cogs1603】饥饿游戏,博弈

来源:互联网 发布:吉他伴奏器软件 编辑:程序博客网 时间:2024/05/24 06:40

思路:
BZOJ上不让交了QAQ
cogs传送门
思路还是很简单的
如果是异或和=0
那么第一步全打开即赢
如果异或和>0
观察是否有异或和为0的箱子堆数
有则赢,没有则输
爆搜可过,线性基更好
代码:

#include<cstdio>#include<cstring>using namespace std;int T,n,tot;int a[25],lb[31];void work(){    scanf("%d",&n);    int t=0;     for (int i=1;i<=n;++i)        scanf("%d",a+i),t^=a[i];    if (!t) return void(puts("Yes"));    memset(lb,0,sizeof(lb));    int i;    for (int j=1;j<=n;++j)    {        for (i=30;i>=0;--i)            if (a[j]>>i&1)                if (!lb[i])                    {lb[i]=a[j];break;}                else                    a[j]^=lb[i];        if (i<0) return void(puts("Yes"));    }    puts("No"); }main(){for (scanf("%d",&T);T;--T) work();}
0 0
原创粉丝点击