Run ID 作者 问题 语言 测评结果 分数 时间 内存 代码长度 提交时间
34999 LYLAKIOIAKIOI 【S】T3 C++ 解答错误 30 21 MS 620 KB 2037 2024-11-21 13:44:57

Tests(3/10):


#include<bits/stdc++.h> using namespace std; #define ll long long const int N=110; struct base{ ll s[N]; ll s2[N],s3[N],tot=0; //bool op=0; void ins(ll x){ for(int i=62;i>=0;i--){ if((x>>i)&1){ //cout<<x<<endl; if(!s[i]){ s[i]=x;break; }else{ x^=s[i]; } } }//if(x==0) op=1; }void fix(){ for(int i=0;i<=62;i++){ if(s[i]==0) continue; for(int j=i-1;j>=0;j--){ if((s[i]>>j)&1){ s[i]^=s[j]; } }s2[++tot]=s[i]; }s3[0]=0; for(int i=1;i<=tot;i++) s3[i]=s3[i-1]^s2[i]; }ll chos(ll a){ ll res=0; //if(!op) a=max(0ll,a); //cout<<a<<endl; for(int i=tot;i>=1;i--){ //cout<<res<<' '<<s3[i-1]<<' '; if((res^s3[i-1])<=a) res^=s2[i]; //cout<<s2[i]<<' '<<res<<' '; }//cout<<endl; return res; } }base[N]; ll a[N]; ll f[N][N]; ll INF=2e18+10; int main(){ int n;cin>>n; for(int i=1;i<=n;i++) cin>>a[i]; for(int i=1;i<=n;i++){ for(int j=1;j<=i;j++) base[i].ins(a[j]); //for(int j=0;j<=61;j++) cout<<base[i].s[j]<<' ';cout<<endl; base[i].fix(); } for(int i=0;i<=n;i++){ for(int j=0;j<=n;j++){ f[i][j]=INF; } }f[0][0]=-1; for(int i=1;i<=n;i++){ for(int j=1;j<=n;j++){ for(int k=0;k<i;k++){ ll val=base[i].chos(f[k][j-1]); if(val<=f[k][j-1]) continue; f[i][j]=min(f[i][j],val); }//cout<<i<<' '<<j<<' '<<f[i][j]<<endl; } }int ans=0; //cout<<base[n].s2[1]; for(int i=n;i>=1;i--){ for(int j=1;j<=n;j++){ if(f[j][i]<INF) ans=i; }if(ans!=0){ cout<<ans;return 0; } }cout<<ans; return 0; }


测评信息: