【BZOJ 2844】 albus就是要第一个出场|线性基

来源:互联网 发布:linux系统密码破解 编辑:程序博客网 时间:2024/05/01 23:37

感人肺腑 按照自己的思路A的 泪~~~


其实有一个规律 题目中的B里面 每个数出现的次数相同 都是 2^(n-tot) 自己YY证明(可以想象线性基)

然后即使 HDU哪个题的反过程辣


#include<cstdio>#include<iostream>#include<algorithm>using namespace std;const int MO=10086;int n,m,tot;int f[100000+10],to[100000+10];void Xor(){    for(int i=(1<<30);i!=0;i>>=1)    {    bool ok=false;    for(int j=tot+1;j<=n;j++)    if((f[j]&i)!=0)    {    tot++;    ok=true;    swap(f[tot],f[j]);    to[tot]=i;    break;    }    if(ok)    for(int j=1;j<=n;j++)    if(j!=tot && (f[j]&i)!=0)    f[j]^=f[tot];    }}int main(){    cin >>n;    for(int i=1;i<=n;i++)        scanf("%d ",&f[i]);    cin >>m;    Xor();int ans=0;for(int i=1;i<=tot;i++){ans<<=1;if((m&to[i])!=0){ans|=1;m^=f[i];}}ans%=MO;for(int i=1;i<=(n-tot);i++)ans<<=1,ans%=MO;ans=(ans+1+MO)%MO;cout<<ans;    return 0;}



0 0
原创粉丝点击