题解 | #手串#
手串
https://www.nowcoder.com/practice/0bb1fad52f474bdaa4d7636ca3a98244
#include <iostream> #include <vector> #include <map> using namespace std; int n,m,c,num_i,kind,sum; map<int,int> mymap; map<int,int>::iterator it; void caltimes(vector<vector<int>> fnum) { int index = 0; map<int,int> anmap; for(int i =0;i<fnum.size();i++) { for(int j = 0;j<fnum[i].size();j++) { int tempv = fnum[i][j]; it = anmap.find(tempv); if(it !=anmap.end()) { anmap[tempv]++; } else{ anmap[tempv] = 1; } } } for(it=anmap.begin();it!=anmap.end();it++) { if(it->second>1) { //cout<<it->first<<" up "<<it->second<<endl; map<int,int>::iterator ait; ait = mymap.find(it->first); if(ait !=mymap.end()) { mymap[it->first]++; } else{ mymap[it->first] = 1; } } } } int main() { cin>>n>>m>>c; vector<vector<int>> finnum; for(int i =0;i<n;i++) { int t; cin>>t; vector<int> stn; for(int j =0;j<t;j++) { int tn; cin>>tn; stn.push_back(tn); } finnum.push_back(stn); } sum = 0; for(int i= 0;i<n;i++) { vector<vector<int>>tempg; vector<vector<int>>ltempg; for(int j =0;j<m;j++) { int ith = (i+j)%n; vector<int> tv = finnum[ith]; tempg.push_back(tv); } caltimes(tempg); } /* for(it=mymap.begin();it!=mymap.end();it++) { if(it->second>1) { cout<<it->first<<" "<<it->second<<endl; sum++; } }*/ sum = mymap.size(); cout<<sum<<endl; }