Run ID | 作者 | 问题 | 语言 | 测评结果 | 分数 | 时间 | 内存 | 代码长度 | 提交时间 |
---|---|---|---|---|---|---|---|---|---|
24262 | baka24 | 【BJ】T3 | C++ | 运行超时 | 0 | 2865 MS | 7120 KB | 1754 | 2023-12-21 13:42:43 |
#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(){ scanf("%lld",&t); while(t--){ for(int i=1;i<=MAXN-5;i++){cnt[i]=0;js[i]=0;} scanf("%lld",&n); for(int i=1;i<=n;i++){ scanf("%lld",&l[i]); bool fl=0; 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; } sml[i]=sml[i-1]+l[i]; if(fl)ans=max(ans,cnt[i]+1); } for(int i=1;i<=n;i++){ for(int j=1;j<=l[i];j++){ 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]; } } } 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++){ 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+n+1,cmp); for(int j=1;j<=tot;j++){ ans=min(ans,j+cnt[j]); } } printf("%lld\n",ans); } return 0; }