Run ID 作者 问题 语言 测评结果 分数 时间 内存 代码长度 提交时间
24266 baka24 【BJ】T3 C++ 通过 100 171 MS 6900 KB 2664 2023-12-21 14:36:32

Tests(3/3):


#include<bits/stdc++.h> using namespace std; #define int long long const int MAXN=100010; int t,n,mxc,ans,l[MAXN],c[MAXN],F[MAXN],cnt[MAXN],js[MAXN],f[2][MAXN],Fj[MAXN],sml[MAXN]; bool cmp(int x,int y){return x>y;} signed main(){ // freopen("slot.in","r",stdin);freopen("slot.out","w",stdout); scanf("%lld",&t); while(t--){ans=1e18; for(int i=0;i<=MAXN-5;i++){c[i]=0;F[i]=0;f[0][i]=f[1][i]=1e18;Fj[i]=0;sml[i]=0;cnt[i]=0;js[i]=-1;} scanf("%lld",&n);//cout<<"n:"<<n<<endl; for(int i=1;i<=n;i++){ scanf("%lld",&l[i]); bool fl=0; sml[i]=sml[i-1]+l[i-1]; for(int j=1;j<=l[i];j++){ scanf("%lld",&c[sml[i]+j]); if(js[c[sml[i]+j]]!=i){ cnt[i]++; } else fl=1; js[c[sml[i]+j]]=i; } if(fl)ans=min(ans,cnt[i]+1); } // cout<<endl; for(int i=1;i<=MAXN-5;i++)js[i]=0; for(int i=1;i<=n;i++){ for(int j=1;j<=l[i];j++){ if(js[c[sml[i]+j]]!=i){ // cout<<cnt[i]<<" "<<f[0][c[sml[i]+j]]<<" "<<f[1][c[sml[i]+j]]<<endl; if(f[0][c[sml[i]+j]]>cnt[i]){ f[1][c[sml[i]+j]]=f[0][c[sml[i]+j]]; f[0][c[sml[i]+j]]=cnt[i]; Fj[c[sml[i]+j]]=i; continue; } if(f[1][c[sml[i]+j]]>cnt[i]){ f[1][c[sml[i]+j]]=cnt[i]; } js[c[sml[i]+j]]=i; } } // cout<<endl; } for(int i=1;i<=MAXN-5;i++)cnt[i]=0,js[i]=0; int tot=0; for(int i=1;i<=n;i++){ tot=0; for(int j=1;j<=l[i];j++){ //cout<<" "<<c[sml[i]+j]<<" "<<js[c[sml[i]+j]]<<" "<<i<<" "<<Fj[c[sml[i]+j]]<<" "<<f[(bool)(i==Fj[c[sml[i]+j]])][c[sml[i]+j]]<<endl; if(js[c[sml[i]+j]]!=i){ cnt[++tot]=f[(bool)(i==Fj[c[sml[i]+j]])][c[sml[i]+j]]; js[c[sml[i]+j]]=i; //cout<<cnt[tot-1]<<" "; } } //cout<<cnt[tot]<<endl; sort(cnt+1,cnt+tot+1,cmp); //cout<<i<<":"<<endl; for(int j=1;j<=tot;j++){ //cout<<cnt[j]<<" "; //cout<<cnt[j]<<" "; ans=min(ans,j+cnt[j]); } //cout<<endl; //cout<<endl; } printf("%lld\n",ans); } return 0; }


测评信息: