维护每个字符出现的次数即可
#include <bits/stdc++.h> #define pb push_back #define mp make_pair #define mem(x) memset(x,0,sizeof(x)) #define mem1(x) memset(x,-1,sizeof(x)) using namespace std; typedef long long ll; typedef double db; const int M = 1e5+7; const double pi = acos(-1); const int inf = 2147483647; const int mod = 1e9+7; map<pair<int,int>,int> begi,clos; int T,k,n; int ans=0,tmp; pair<int,int> t; void init(){ begi.clear(); clos.clear(); ans=0; } void solve(){ for(int i=1;i<=n;i++){ scanf("%d",&k); for(int j=1;j<=k;j++){ scanf("%d%d",&t.first,&t.second); if(begi[t]==0){ begi[t]=i; clos[t]=i; if(ans<1)ans=1; } else{ if(clos[t]==i)continue; if(clos[t]==i-1){ clos[t]=i; tmp=clos[t]-begi[t]+1; if(ans<tmp)ans=tmp; } else{ begi[t]=i; clos[t]=i; } } } } } int main(){ //freopen("1.in","r",stdin); //freopen("1.out","w",stdout); scanf("%d",&T); while(T--) { init(); scanf("%d",&n); solve(); printf("%d\n",ans); } return 0; }