提交时间:2023-12-21 13:58:56
运行 ID: 24263
#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--){ 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]=0;} 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; } //cout<<cnt[i]<<" "; if(fl)ans=max(ans,cnt[i]+1); } // cout<<endl; for(int i=1;i<=n;i++){ for(int j=1;j<=l[i];j++){ // 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]; } } // 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; } } sort(cnt+1,cnt+tot+1,cmp); for(int j=1;j<=tot;j++){ //cout<<cnt[j]<<" "; ans=min(ans,j+cnt[j]); } //cout<<endl; } printf("%lld\n",ans); } return 0; }