poj 2153 Rank List(数据结构+图的用法)

简介:
Time Limit: 10000MS   Memory Limit: 65536K
Total Submissions: 7883   Accepted: 2561

Description

Li Ming is a good student. He always asks the teacher about his rank in his class after every exam, which makes the teacher very tired. So the teacher gives him the scores of all the student in his class and asked him to get his rank by himself. However, he has so many classmates, and he can’t know his rank easily. So he tends to you for help, can you help him?

Input

The first line of the input contains an integer N (1 <= N <= 10000), which represents the number of student in Li Ming’s class. Then come N lines. Each line contains a name, which has no more than 30 letters. These names represent all the students in Li Ming’s class and you can assume that the names are different from each other. 

In (N+2)-th line, you'll get an integer M (1 <= M <= 50), which represents the number of exams. The following M parts each represent an exam. Each exam has N lines. In each line, there is a positive integer S, which is no more then 100, and a name P, which must occur in the name list described above. It means that in this exam student P gains S scores. It’s confirmed that all the names in the name list will appear in an exam.

Output

The output contains M lines. In the i-th line, you should give the rank of Li Ming after the i-th exam. The rank is decided by the total scores. If Li Ming has the same score with others, he will always in front of others in the rank list.

Sample Input

3
Li Ming
A
B
2
49 Li Ming
49 A
48 B
80 A
85 B
83 Li Ming

Sample Output

1
2


题意理解:
(1)这里每次排名是需要把以前每次的成绩累加起来进行的排名----这点需要注意
(2)放在图里边,方便根据名字查找分数,这里键为名字,value为分数。每次都要把分数累加起来
(3)输入要注意,使用gets时,一定要先把前边的回车换行或是空格用getchar先吃掉
(4)查找排名是直接一次遍历即可判断出排名位置
复制代码
#include <iostream>
#include <stdio.h>
#include <stdlib.h>
#include <map>
using namespace std;

int main()
{
    int N;//N个学生
    char name[35];//学生名字
    int sco;//李明的成绩
    int rank;//李明的排名
    int M;//M次考试
    int score;//总分数表
    //成绩名单映射表
    map<string,int> stu_sco;
    cin>>N;
    getchar();//注意一定要吃掉回车换行符
    for(int i = 1; i <= N; i++)
    {
        //读取名字
        gets(name);
        //初始化,使得每位同学成绩为0
        stu_sco.insert(make_pair(name,0));
    }
    cin>>M;
    getchar();//注意一定要吃掉回车换行符
    while(M--)
    {
        rank = 1;
        for(int i = 1; i <= N; i++)
        {
            cin>>score;
            getchar();//注意一定要吃掉空格。。。。。
            gets(name);
            map<string,int>::iterator it = stu_sco.find(name);
            it->second += score;
            if(it->first.compare("Li Ming")==0)
            sco = it->second;
        }
        for(map<string,int>::iterator it=stu_sco.begin();it!=stu_sco.end();it++)
        if(it->second>sco)rank++;//有人成绩比他的好,他的排名需要向后一位
        cout<<rank<<endl;
    }
    return 0;
}
复制代码
本文转自NewPanderKing51CTO博客,原文链接: http://www.cnblogs.com/newpanderking/archive/2012/09/10/2679115.html  ,如需转载请自行联系原作者
相关文章
|
5月前
|
消息中间件 NoSQL Redis
redis数据结构-List
redis数据结构-List
54 1
|
2月前
|
存储 消息中间件 NoSQL
Redis数据结构:List类型全面解析
Redis数据结构——List类型全面解析:存储多个有序的字符串,列表中每个字符串成为元素 Eelement,最多可以存储 2^32-1 个元素。可对列表两端插入(push)和弹出(pop)、获取指定范围的元素列表等,常见命令。 底层数据结构:3.2版本之前,底层采用**压缩链表ZipList**和**双向链表LinkedList**;3.2版本之后,底层数据结构为**快速链表QuickList** 列表是一种比较灵活的数据结构,可以充当栈、队列、阻塞队列,在实际开发中有很多应用场景。
|
3月前
|
设计模式 安全 容器
数据结构第一篇【探究List和ArrayList之间的奥秘 】
数据结构第一篇【探究List和ArrayList之间的奥秘 】
30 5
|
7月前
|
存储 算法
数据结构===图
数据结构===图
|
4月前
|
存储 JSON NoSQL
redis基本数据结构(String,Hash,Set,List,SortedSet)【学习笔记】
这篇文章是关于Redis基本数据结构的学习笔记,包括了String、Hash、Set、List和SortedSet的介绍和常用命令。文章解释了每种数据结构的特点和使用场景,并通过命令示例演示了如何在Redis中操作这些数据结构。此外,还提供了一些练习示例,帮助读者更好地理解和应用这些数据结构。
redis基本数据结构(String,Hash,Set,List,SortedSet)【学习笔记】
|
3月前
|
存储 缓存 应用服务中间件
Nginx入门 -- 基本数据结构中之ngx_list_t,ngx_queue_t
Nginx入门 -- 基本数据结构中之ngx_list_t,ngx_queue_t
45 0
|
6月前
|
算法 Python
逆袭之路!用 Python 玩转图的 DFS 与 BFS,让数据结构难题无处遁形
【7月更文挑战第12天】图的遍历利器:DFS 和 BFS。Python 中,图可表示为邻接表或矩阵。DFS 沿路径深入,回溯时遍历所有可达顶点,适合找路径和环。BFS 层次遍历,先近后远,解决最短路径问题。两者在迷宫、网络路由等场景各显神通。通过练习,掌握这些算法,图处理将游刃有余。
67 3
|
6月前
|
存储 算法 Python
“解锁Python高级数据结构新姿势:图的表示与遍历,让你的算法思维跃升新高度
【7月更文挑战第13天】Python中的图数据结构用于表示复杂关系,通过节点和边连接。常见的表示方法是邻接矩阵(适合稠密图)和邻接表(适合稀疏图)。图遍历包括DFS(深度优先搜索)和BFS(广度优先搜索):DFS深入探索分支,BFS逐层访问邻居。掌握这些技巧对优化算法和解决实际问题至关重要。**
58 1
|
6月前
|
存储 缓存 Python
Python中的列表(List)和元组(Tuple)是两种重要的数据结构
【7月更文挑战第12天】Python中的列表(List)和元组(Tuple)是两种重要的数据结构
67 1
|
7月前
|
存储 索引 Python
Python教程:深入了解 Python 中 Dict、List、Tuple、Set 的高级用法
Python 中的 Dict(字典)、List(列表)、Tuple(元组)和 Set(集合)是常用的数据结构,它们各自有着不同的特性和用途。在本文中,我们将深入了解这些数据结构的高级用法,并提供详细的说明和代码示例。
355 2