前n个字符串为DOMjudge输出的结果(无序),后n个是Kattis输出的结果(亦无序),求这两个测评机可能输出相同结果的次数的最大值。
1 #include <iostream> 2 #include <map> 3 #include <algorithm> 4 #include <string> 5 using namespace std; 6 map<string,int> m1,m2; 7 int main() 8 { 9 int n,ans; 10 string str; 11 while(cin>>n) 12 { 13 ans=0; 14 m1.clear(); m2.clear(); 15 for(int i=0;i<n;i++) 16 { 17 cin>>str; 18 if(m1.count(str)) 19 m1[str]++; 20 else 21 m1[str]=1; 22 } 23 for(int i=0;i<n;i++) 24 { 25 cin>>str; 26 if(m2.count(str)) 27 m2[str]++; 28 else 29 m2[str]=1; 30 } 31 map<string,int>::iterator it; 32 for(it=m1.begin();it!=m1.end();it++) 33 { 34 str=it->first; 35 ans+=min(m1[str],m2[str]); 36 } 37 cout<<ans<<endl; 38 } 39 }