题目描述:

在 Berland 流行着纸牌游戏 “Berlogging” ,这个游戏的赢家是根据以下规则确定的:在每一轮中,玩家获得或失去一定数量的分数,在游戏过程中,分数被记录在“名称和得分”行中,其中名称是玩家的名字,得分是在这一轮中获得的分数。得分是负值意味着玩家失去了相应的分数。如果在比赛结束时只有一名玩家分数最多,他就是获胜者。如果两名或两名以上的玩家在比赛结束时都有最大的分数 m,那么其中首先获得至少 m 分的玩家胜利。开始时,每个玩家都是0分。保证在比赛结束时至少有一个玩家的分数为正。

输入格式:

第一行包含整数n(1 <= n <= 1000),n 是游戏进行的的回合数。

第 2 ~ n+1 行,按照时间顺序输入“名称和得分”行的信息,其中名称是长度不大于 32 的小写字母组成的字符串,分数的绝对值不大于 1000。

输出格式:

输出获胜者的名称。

分析:利用map可以很快的解出这道题,在map中找value的最大值的时候,网上大部分的代码都是去遍历一遍,我在这里为了让自己更加熟练练习STL,就写了哥按照vaule排序的函数。另外,有可能会出现比赛结束后最大分相等的情况。所以我们就要结束之后再访问一遍,查找第一次大于等于最大分的情况。这也是m1出现的意义。。。

 #include<iostream>
#include<algorithm>
#include<map>
#include<vector>
#include<cstring>
#include<cstdlib>
using namespace std;
#define maxn 1010
int MIN=-;
string name[maxn];
int score[maxn];
bool flag(pair<string,int>o1 , pair<string,int>o2){
return o1.second>o2.second;
}
map<string,int> m,m1;/*m记录最大值,m1进行重新统计,找到第一次达到分数的人*/
int main(){
int n;
string name_max;//记录结果人名
cin>>n;
for( int i=; i<n; i++ ){
cin>>name[i]>>score[i];
m[name[i]]+=score[i];
}
vector< pair<string,int> > dic(m.begin(),m.end());
sort(dic.begin(),dic.end(),flag);
int temp_maxn=dic[].second;
for(int i=; i<n; i++ ){
m1[name[i]]+=score[i];//重新进行统计
if(m[name[i]]==temp_maxn&&m1[name[i]]>=temp_maxn){
name_max=name[i];
break;
}
}
cout<<name_max;
return ;
}

CF2A Winner的更多相关文章

  1. cf2A Winner(implementation)

    题意: N个回合. 每个回合:name score[名为name的这个人得了score分(可负可正)]. 问最后谁的累积分数是最高的.设为M.如果有好几个都得了M,找出这几个人中哪个最早回合累积分数超 ...

  2. HDU 5754 Life Winner Bo 组合博弈

    Life Winner Bo Problem Description   Bo is a "Life Winner".He likes playing chessboard gam ...

  3. HDU 2509 Be the Winner nim博弈变形

    Be the Winner Problem Description   Let's consider m apples divided into n groups. Each group contai ...

  4. HDU5754 Life Winner Bo(博弈)

    题目 Source http://acm.hdu.edu.cn/showproblem.php?pid=5754 Description Bo is a "Life Winner" ...

  5. Codeforces Beta Round #2 A. Winner

    A. Winner time limit per test 1 second memory limit per test 64 megabytes input standard input outpu ...

  6. HDU2509 Be the Winner

    Be the Winner Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)Tot ...

  7. Recruit Coupon Purchase Winner's Interview: 2nd place, Halla Yang

    Recruit Coupon Purchase Winner's Interview: 2nd place, Halla Yang Recruit Ponpare is Japan's leading ...

  8. winner tree 胜者树

    在树形选择排序中,利用锦标赛思想建立的树称为胜者树. 1.每个非终端节点存储的是左右孩子节点中的优胜者. 2.通过减少比较次数,提高效率. 3.胜者树就是一颗特殊的线段树. 一.构建树 Procedu ...

  9. cf------(round 2)A. Winner

    A. Winner time limit per test 1 second memory limit per test 64 megabytes input standard input outpu ...

随机推荐

  1. nltk 的分词器punkt: ssl问题无法下载

     报错: LookupError: ********************************************************************** Resource pu ...

  2. Maven中classifier

    1.classifier概述 classifier通常用于区分从同一POM构建的具有不同内容的构件(artifact).它是可选的,它可以是任意的字符串,附加在版本号之后. 2.使用场景 场景一:区分 ...

  3. 关于EOF的使用的好文章

    Linux shell脚本EOF妙用 https://blog.csdn.net/zongshi1992/article/details/71693045

  4. Python并行实例

    任务 def single(): # 单进程单线程实现 s = 0 for i in range(1, N): s += math.sqrt(i) return s 结论 Python多线程无法利用多 ...

  5. 【C#】C#线程_基元线程的同步构造

    目录结构: contents structure [+] 简介 为什么需要使用线程同步 线程同步的缺点 基元线程同步 什么是基元线程 基元用户模式构造和内核模式构造的比较 用户模式构造 易变构造(Vo ...

  6. Effective Java 第三版——71. 避免不必要地使用检查异常

    Tips 书中的源代码地址:https://github.com/jbloch/effective-java-3e-source-code 注意,书中的有些代码里方法是基于Java 9 API中的,所 ...

  7. Spark源码分析系列(目录)

    记录自己学习研究 Spark 的探索过程,为后续总结奠定基础. 本文代码研究以 Spark 2.3.0 源代码为基准,如果看本文,请阅读时,下载对应的 Spark 版本. 图1 伯克利的数据分析软件栈 ...

  8. Mybatis(五) 延迟加载和缓存机制(一级二级缓存)

    踏踏实实踏踏实实,开开心心,开心是一天不开心也是一天,路漫漫其修远兮. --WH 一.延迟加载 延迟加载就是懒加载,先去查询主表信息,如果用到从表的数据的话,再去查询从表的信息,也就是如果没用到从表的 ...

  9. MySQL架构总览->查询执行流程->SQL解析顺序

    Reference:  https://www.cnblogs.com/annsshadow/p/5037667.html 前言: 一直是想知道一条SQL语句是怎么被执行的,它执行的顺序是怎样的,然后 ...

  10. CAS单点登陆,URL多出个参数jsessionid导致登陆失败问题

    目录: 1.定位问题 2.问题产生的原因 3.解决问题 一 定位问题 首先,如下图所示:输入到地址栏的地址被302重定向到单点登录地址,地址由Response Headers中的参数Location所 ...