异或空间求基(模板)——hdu3949

Posted zsben991126

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了异或空间求基(模板)——hdu3949相关的知识,希望对你有一定的参考价值。

输出样例有点问题的。。

#include<bits/stdc++.h>
using namespace std;
#define ll unsigned long long
#define maxn 10005
ll n,a[maxn],zero,size;

void gauss()
    for(int i=1;i<=n;i++)
        for(int j=i+1;j<=n;j++)
            if(a[j]>a[i])swap(a[i],a[j]);
            
        if(a[i]==0)zero=1;size=i-1;return;
        
        for(int k=63;k>=0;k--)
            if(a[i] & (1ull<<k))
                for(int j=1;j<=n;j++)
                    if(j!=i && (a[j] & (1ull<<k)))
                        a[j]^=a[i];
                break;//消完最高元后就可以退出了 
            
    


int main()
    int t,tt;cin>>t;
    for(int tt=1;tt<=t;tt++)

        printf("Case #%d:\n",tt);
        
        cin>>n;        zero=0;size=n; 
        for(int i=1;i<=n;i++)cin>>a[i];
        gauss();
        
        int q;cin>>q;
        while(q--)
            ll k,ans=0;
            cin>>k;
            if(zero)k--;
            if(k>= (1llu<<size))puts("-1");continue;
            for(int i=size-1;i>=0;i--)
                if(k & (1llu<<i))
                        ans^=a[size-i];
            cout<<ans<<\n;
        
    

 

 

以上是关于异或空间求基(模板)——hdu3949的主要内容,如果未能解决你的问题,请参考以下文章

HDU3949 XOR

hdu 3949 XOR (线性基)

hdu3949(线性基,求第k小的异或和

HDU - 3949 线性基应用

[HDU 3949] XOR

HDU 3949 XOR(线性基)