- 双字典论滚解决
#include<bits/stdc++.h> using namespace std; int main(){ int N,m; cin>>N; while(N--){ cin>>m; int f,x,y; map<pair<int,int>,int> pre;//历史帧数 map<pair<int,int>,int> now;//现在帧数 int max_ = 0; for(int i =0; i< m;i++){ cin>>f; for(int j =0; j< f;j++){ cin>>x>>y; if(pre.count({x,y})){ now[{x,y}] = pre[{x,y}] + 1;//又出现了一次,就是老的加1 }else{ now[{x,y}] = 1;//从来没有出现过 } if(now[{x,y}]>max_){//时时更新任何一个连续帧 max_ = now[{x,y}]; } } //如果这帧为0,那么就不会保留任何历史信息了,因为now在这轮没有任何内容。 pre.clear();//清空历史,把now变为历史 pre.swap(now);//now 置空,同时,now变成上一个,这样的话连续问题就可以解决 } cout<<max_<<endl; } return 0; }