poj 2643 election

题目链接: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;
}

 

转载于:https://www.cnblogs.com/111qqz/p/4629235.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值