异或空间求基(模板)——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的主要内容,如果未能解决你的问题,请参考以下文章