题目链接:http://poj.org/problem?id=2643
在考stl的map...
我是定义了一个string 指向string的,表示参选人和党派的关系,和一个string 指向int的,表示某个党派被投票的次数。
需要注意的是!!!
需要注意的是!!!
需要注意的是!!!
字符串读入部分...
在输入n和m之后,会有一个回车符没读进去...(大概是这样?)
如果不处理一下的话,后面的字符串就会少读入一个...(sad)
解决的办法是在读完n和m之后写一个getchar(); 把回车符读掉。
#include <algorithm> #include <cstdio> #include <iostream> #include <cstring> #include <string> #include <cmath> #include <map> #include <stack> #include <queue> using namespace std; typedef long long LL; const int inf = 8E8; int n,m; string ans; map<string,string>m1; map<string,int>m2; string c_name,p_name; char ch; int main() { cin>>n; getchar(); for ( int i = 1 ; i <= n ; ++i ) { getline(cin,c_name); getline(cin,p_name); m1[c_name]=p_name; } cin>>m; getchar(); for ( int i = 1 ; i <= m ; i++ ) { getline(cin,c_name); m2[c_name]++; } map<string,int>::iterator it; int mmax=-1; for (it=m2.begin();it!=m2.end();it++) { if (it->second>mmax) { mmax=it->second; ans = m1[it->first]; } } int p = 0; for ( it = m2.begin();it!=m2.end();it++) { if (it->second==mmax) { p++; } } if (p!=1) { ans="tie"; } cout<<ans<<endl; return 0; }