poj 2643 election

题目链接:http://poj.org/problem?id=2643

在考stl的map...

我是定义了一个string 指向string的,表示参选人和党派的关系,和一个string 指向int的,表示某个党派被投票的次数。

需要注意的是!!!

需要注意的是!!!

需要注意的是!!!

字符串读入部分...

在输入n和m之后,会有一个回车符没读进去...(大概是这样?)

如果不处理一下的话,后面的字符串就会少读入一个...(sad)

解决的办法是在读完n和m之后写一个getchar(); 把回车符读掉。

 1
 2    
 3    /* ***********************************************
 4    Author :111qqz
 5    Created Time :2016年02月19日 星期五 15时44分55秒
 6    File Name :2643.cpp
 7    ************************************************ */
 8    
 9    #include <algorithm>
10    #include <cstdio>
11    #include <iostream>
12    #include <cstring>
13    #include <string>
14    #include <cmath>
15    #include <map>
16    #include <stack>
17    #include <queue>
18    
19    using namespace std;
20    typedef long long LL;
21    const int inf = 8E8;
22    int n,m;
23    string ans;
24    map<string,string>m1;
25    map<string,int>m2;
26    string c_name,p_name;
27    char ch;
28    int main()
29    {
30        cin>>n;
31        getchar();
32        for ( int i = 1 ; i <= n ; ++i )
33        {
34            getline(cin,c_name);
35    
36            getline(cin,p_name);
37            m1[c_name]=p_name;
38        }
39        cin>>m;
40        getchar();
41        for ( int i = 1 ; i <= m ; i++ )
42        {
43            getline(cin,c_name);
44            m2[c_name]++;
45        }
46        map<string,int>::iterator it;
47        int mmax=-1;
48        for (it=m2.begin();it!=m2.end();it++)
49        {
50            if (it->second>mmax)
51            {
52               mmax=it->second;
53               ans = m1[it->first];
54            }
55        }
56        int p = 0;
57        for ( it = m2.begin();it!=m2.end();it++)
58        {
59            if (it->second==mmax)
60            {
61                p++;
62            }
63        }
64        if (p!=1)
65        {
66            ans="tie";
67        }
68    
69        cout<<ans<<endl;
70    
71    
72    
73    	return 0;
74    }
75    
76