BZOJ 4269 再见Xor
Posted ziliuziliu
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了BZOJ 4269 再见Xor相关的知识,希望对你有一定的参考价值。
线性基。
求次大值就是再异或一个线性基好了。
#include<iostream> #include<cstdio> #include<cstring> #define maxn 100050 using namespace std; int n,a[maxn],ins[maxn]; int main() { scanf("%d",&n); for (int i=1;i<=n;i++) scanf("%d",&a[i]); for (int i=1;i<=n;i++) { for (int j=30;j>=0;j--) { if (a[i]&(1<<j)) { if (!ins[j]) { ins[j]=a[i]; break; } else a[i]^=ins[j]; } } } int ans1=0,ans2=0; for (int i=30;i>=0;i--) if ((ans1^ins[i])>ans1) ans1^=ins[i]; for (int i=30;i>=0;i--) if ((ans1^ins[i])<ans1) ans2=max(ans2,(ans1^ins[i])); printf("%d %d\n",ans1,ans2); return 0; }
以上是关于BZOJ 4269 再见Xor的主要内容,如果未能解决你的问题,请参考以下文章