G66 线性基+贪心法 P4301 [CQOI2013] 新Nim游戏
视频链接:G66 线性基+贪心法 P4301 [CQOI2013] 新Nim游戏_哔哩哔哩_bilibili
G58 尼姆(Nim)游戏 - 董晓 - 博客园 (cnblogs.com)
P4301 [CQOI2013] 新Nim游戏 - 洛谷 | 计算机科学教育新生态 (luogu.com.cn)
// 线性基 O(63*n) #include <iostream> #include <cstring> #include <algorithm> using namespace std; #define LL long long const LL N=105; LL n,m; LL a[N],p[64],ans; void insert(LL x){ LL y=x; for(int i=63;i>=0;--i){ if(x>>i&1){ //x第i位为1 if(!p[i]){ //不存在则加入 p[i]=x; break; } x^=p[i]; //存在则异或 } } //累计不能构造线性基的数 if(x==0) ans+=y; } int main(){ cin>>n; for(int i=0;i<n;++i) cin>>a[i]; sort(a,a+n,greater<LL>()); //降序 for(int i=0;i<n;++i) insert(a[i]); cout<<ans<<endl; }