poj 2153 Rank List(查找,Map)

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

思路分析:

判断Li Ming的成绩排名,需要在所有的数据章查找成绩比其高的人的数目,为查找问题。

查找问题可以使用Hash表,STL中的Map,查找树,或者使用排序与二分查找即可。

代码:

#include <iostream>
#include <map>
#include <string>
using namespace std;

int main()
{
    int personNum, examTimes, scoreOfLi;
    string stuName;
    map<string, int> rankList;

    cin >> personNum;
    cin.get( );
    for (int i = 0; i < personNum; ++i)
    {
        getline(cin, stuName);
        rankList[stuName] = 0;
    }
    cin >> examTimes;
    cin.get( );
    for (int i = 0; i < examTimes; ++ i)
    {
        int score;

        for (int j = 0; j < personNum; ++ j)
        {
            cin >> score;
            cin.get( );
            getline(cin, stuName);
            rankList[stuName] += score;
            if (stuName == string("Li Ming"))
                scoreOfLi = rankList[stuName];
        }

        int rankOfLiMing = 1;
        for (map<string, int>::iterator iter = rankList.begin( ); iter != rankList.end(); ++iter)
        {
            if (iter->second > scoreOfLi)
                rankOfLiMing++;
        }
        cout << rankOfLiMing << endl;
    }

    return 0;
}
时间: 2024-10-23 11:31:51

poj 2153 Rank List(查找,Map)的相关文章

poj 2153 Rank List

原题链接:http://poj.org/problem?id=2153 简单题,map,平衡树均可.. map: 1 #include<algorithm> 2 #include<iostream> 3 #include<cstdlib> 4 #include<cstdio> 5 #include<string> 6 #include<map> 7 using std::cin; 8 using std::map; 9 using s

poj 1151 Atlantis 二分查找+离散化

Atlantis Time Limit: 1000MS   Memory Limit: 10000K Total Submissions: 17464   Accepted: 6654 Description There are several ancient Greek texts that contain descriptions of the fabled island Atlantis. Some of these texts even include maps of parts of

POJ训练计划3096_Surprising Strings(STL/map)

解题报告 题目传送门 题意: 给一个字符串,要求,对于这个字符串空隔为k取字符对(k=0,1,2,3,4...)要求在相同的空隔取对过程汇总,整个字符串中没有一个相同字符对如: ZGBZ: 间隔为0的字符对有: ZG.GB.BZ,三个均不相同 间隔为1的字符对有: ZG. GZ,均不相同 间隔为2的字符对有: ZZ 仅有一个,不必比较. 这种字符串定义为"surprising". 之后按照格式输出. 思路: map暴力. #include <iostream> #inclu

POJ 2141 Message Decowding(map)

Message Decowding Time Limit: 1000MS   Memory Limit: 65536K Total Submissions: 11735   Accepted: 6536 Description The cows are thrilled because they've just learned about encrypting messages. They think they will be able to use secret messages to plo

成绩累加排名,poj(2153)

题目链接:http://poj.org/problem?id=2153 解题报告: 注意map中的string,因此要将char[]转换为string型. #include <iostream> #include <stdio.h> #include <string> #include <string.h> #include <algorithm> #include <map> using namespace std; const i

poj 2452(RMQ+二分查找)

题目链接: http://poj.org/problem?id=2452 题意:在区间[1,n]上找到满足 a[i]<a[k]<a[j] (i<=k<=j) 的最大子区间 (j-i)如不存在输出 -1. 思路:枚举i,找到 i右边第一个不大于(不是小于) a[i]的数a[k](二分查找+RMQ某段区间的最小值是否小于a[i].最后确定到一个点),于是我们可以得到在区间[i,k-1]范围内的数都会大于 a[i] ,所以对于下标i,它对应的最长区间必定在[i,k-1]之间. 所以,我们

poj 2945 Find the Clones (map+string,hash思维)

Find the Clones Time Limit: 5000MS   Memory Limit: 65536K Total Submissions: 7498   Accepted: 2780 Description Doubleville, a small town in Texas, was attacked by the aliens. They have abducted some of the residents and taken them to the a spaceship

POJ 2503 单词映射(map)

Sample Input dog ogdaycat atcaypig igpayfroot ootfrayloops oopslay atcayittenkayoopslaySample Output catehloops 大致题意:输入一个字典,字典格式为“英语à外语”的一一映射关系然后输入若干个外语单词,输出他们的 英语翻译单词,如果字典中不存在这个单词,则输出“eh” 输入时顺便用STL的map标记外语是否出现过,然后再用map建立“外语à英语”的映射,那么输出时先查找“出现”的标记,若有

HDOJ1251(前缀匹配---分块查找&amp;map应用)

分块查找算法 #include<iostream> #include<cstdio> #include<cstring> #include<algorithm> using namespace std; const int SIZE=1300000+16; const int BLOCKS=50000; //块的大小 char word[SIZE][11]; char pre[20]; int Num[27]; bool isPre(char mo[],ch