题目描述:

在 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. HRD Emulator in HTML5

    Posted on March 21, 2012 by Moto Just like MPEG-2 video uses VBV (Video Buffer Verifier), H.264 stan ...

  2. springboot 注解整理

    项目用到的注解作用: bean的分类标识@Service: 注解在类上,表示这是一个业务层bean@Controller:注解在类上,表示这是一个控制层bean@Repository: 注解在类上,表 ...

  3. MySQL中的isnull、ifnull和nullif函数用法

    isnull(expr) 如expr为null,那么isnull()的返回值为1,否则返回值为0. mysql>select isnull(1+1); ->0 mysql>selec ...

  4. sed 替换多个空格为一个

    sed -i 's/[ ][ ]*/ /g'  file.txt

  5. 移动端禁止页面拖动 h5禁止拖动页面

    PC上css控制滚动仅css("overflow","hidden")已足够. 但是,如果在Mobile上还是可以拖动的!所以需要监听touchmove事件. ...

  6. [windows+cocos2dx]文本类

    文字也是游戏最重要的元素之中的一个,以下就看看使用动态字体和静态字体库怎样创建文字.使用动态字体库创建的文字能够包括经常使用的不论什么字符,一般假设用户要输入名字,这就最好用动态字体库.由于你不知道用 ...

  7. .NET CORE控制器里的方法取传参的坑

    把以前的ASP.NET MVC的项目改成用.NET CORE来写,写好了部署上去了,结果问题一大堆,今天慢慢检查了一下,发现一个大坑: 写控制器里的方法接收参数数都是直接写在控制器的方法参数里的,如: ...

  8. 适用于 Windows 10 的触摸板手势

    高级用户! 在 Windows 10 笔记本电脑的触摸板上试用这些手势: 选择项目:点击触摸板. 滚动:将两根手指放在触摸板上,然后以水平或垂直方向滑动. 放大或缩小:将两根手指放在触摸板上,然后收缩 ...

  9. Why does deep learning work?

    Learning Deep Architectures for AI By Yoshua Bengio http://www.iro.umontreal.ca/~bengioy/papers/ftml ...

  10. SQL Server 2016新特性:In-Memory OLTP

    存储格式修改 在2014,2016中修改了内存优化表的存储格式,新的格式是序列的并且the database is restarted once during database recovery.   ...