poj 2643 election

Posted by 111qqz on Wednesday, July 8, 2015

TOC

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

在考stl的map…

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

需要注意的是!!!

需要注意的是!!!

需要注意的是!!!

字符串读入部分…

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

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

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

/* ***********************************************
Author :111qqz
Created Time :2016年02月19日 星期五 15时44分55秒
File Name :2643.cpp
************************************************ */

#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;
}

「真诚赞赏,手留余香」

111qqz的小窝

真诚赞赏,手留余香

使用微信扫描二维码完成支付