POJ 2153 stl

#include<iostream>
#include<map>
#include<string>
using namespace std;
int main()
{
    int n,m,i,j;
    char name[10003][33],str[33];
    string s1,s2;
    while(scanf("%d",&n)!=EOF)
    {
        getchar();

        map<string,int>Map;

        for(i=0;i<n;i++)
        {
            gets(name[i]);

            int len=strlen(name[i]);
            s1="";

            for(j=0;j<len;j++)
                s1+=name[i][j];

            Map[s1]=0;
        }
        scanf("%d",&m);
        for(i=0;i<m;i++)
        {
            for(j=0;j<n;j++)
            {
                int x;
                s1="";
                scanf("%d",&x);
                getchar();
                gets(str);
                int len=strlen(str);
                for(int k=0;k<len;k++)
                    s1+=str[k];
                Map[s1]+=x;
            }
            int ans=1;
            s2="Li Ming";
            for(j=0;j<n;j++)
            {
                if(strcmp(name[j],"Li Ming")!=0)
                {

                    if(Map[name[j]]>Map[s2])
                        ans++;
                }
            }
            printf("%d\n",ans);
        }
    }
}
时间: 2024-10-18 09:02:04

POJ 2153 stl的相关文章

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, exa

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(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 2892 stl或线段树

标准解法应该是线段树,这里提供另一种思路:将“断点”(即被摧毁的村庄)放入stl的容器(我用的是set)中维护,对于每次查询,只要找这个数在哪两个断点之间即可,写起来轻松愉快. PS:hdu上的数据略坑,同一个村庄可以被摧毁多次,恢复的时候一次恢复就可以让它不再是断点,但是第一次恢复以后剩下几次也是需要恢复的...所以不能把它被摧毁的记录删除,另外没有被摧毁的村庄时也有R操作.poj上的数据比较规范,符合实际情况,没有上面的奇怪数据. 1 #include <algorithm> 2 #inc

poj 2153

题意:题目还是很简单的,就是求Li Ming 在班上的排名,而且成绩是相加的. 思路:用map就行.不然好像用qsort+二分也可以,不过我在那里碰到了一些状况,然后就没用这种方法了,简单的map就可以解决. map是根据前面的类型来进行排序的,map是有序的. 1 Memory: 1220K Time: 1407MS 2 Language: C++ Result: Accepted 3 Source Code 4 #include <stdio.h> 5 #include <iostr

POJ 2049 Finding Nemo 优先队列 STL

题目链接:http://poj.org/problem?id=2049 题目利用了<海底总动员>的情节,小丑鱼尼莫迷路了,他老爸去营救他便是题意. 题目给出了这样的地图,说是假设地图由墙和门组成,忽略墙的厚度,地图上有门,没有墙的地方是可以自由行动的问可以经过最少多少道门便可以营救到尼莫. 这个题给的数据是墙的交点为整数点,但鱼爸爸实在非墙的地方自由移动. 因此,这个题有两个难点: 1.如果建图保存地图 2.如何在地图上遍历 由于题目是给出一个点(x,y),来表示一段墙 我便用一对X,Y来表示

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 2082 Terrible Sets (数据结构 ——栈 STL)

 Terrible Sets Time Limit: 1000MS   Memory Limit: 30000K Total Submissions: 2999   Accepted: 1549 Description Let N be the set of all natural numbers {0 , 1 , 2 , . . . }, and R be the set of all real numbers. wi, hi for i = 1 . . . n are some elem

poj 2243 bfs 利用 结构体中的step成员保存步数 ,STL的队列

//BFS #include <iostream> #include <queue> using namespace std; bool used[8][8]; int move[8][2]={1,2, -1,2, -2,1, -2,-1, -1,-2, 1,-2, 2,-1, 2,1}; struct position { int i,j; int step; position(int a,int b,int c) { i=a; j=b; step=c; } }; int mai