成绩累加排名,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 int maxn = 10010;

char li[40];
int n,m;
string name[maxn];
map<string,int > score;

int main()
{
    scanf("%d",&n);
    getchar();

    for(int i=0;i<n;i++)
    {
        gets(li);
        name[i] = li;
        string st(li);
        score[st] = 0;
    }
    scanf("%d",&m);
    getchar();
    char na[40];
    strcpy(li,"Li Ming");

    int mark;
    while(m--)
    {
        for(int i=0;i<n;i++)
        {
            int a;
            scanf("%d",&a);
            getchar();
            gets(na);
            string st(na);
            score[st]+=a;
            if(strcmp(na,li)==0)
                mark=score[st];
        }
        int rank=1;
        for(int i=0;i<n;i++)
            if(score[name[i]]>mark)
                rank++;
        printf("%d\n",rank);
    }
    return 0;
}
时间: 2024-10-24 06:43:13

成绩累加排名,poj(2153)的相关文章

SQL成绩统计分析—排名问题

ROW_NUMBER(),RANK(),DENSE_RANK(),NTILE() 最近写了近半个月的成绩统计服务 , 被SQL折磨半死,下面介绍下在SQL成绩统计分析中遇到的一些小问题,首先介绍下成绩分析中经常遇到的问题 就是排名问题,这里就不得不提到SQL中的ROW_NUMBER(),RANK(),DENSE_RANK(),NTILE()这四个好兄弟了,下面一一揭开它们神秘的面纱: 首先create一个学生成绩表(studentScore) 不多做介绍了如下 1.ROW_NUMBER() 定义

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

Excel小tips - 如何实现多列成绩统一排名

本文参考:http://mp.weixin.qq.com/s/XR49hyG9Cods7rOcsM-tRg 如果有以下数据文件,需要进行成绩排名. 第一步:先在成绩列后边添加一列,用来显示名次.如下: 第二步:选中D3,输入公式.如下: 注意公式输入要准确.外层括号第一个参数C2,指定了当前需要进行排序显示名次的记录,第二个参数可以理解为参与排序的成员全体. 第三步:公式输入完成后,点击Enter键. 选中D2后,往下拉,会自动填充排序结果: 第四步:复制C2到C6的区域,然后到H2到H6的区域

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

R_Studio(学生成绩)对两个班级学生成绩进行集合,重新计算学生综合测评成绩并对学生按综合测评成绩进行排名

对成绩表"11_1_1.csv" "11_2_1.csv"进行集成,并重新计算4门课程的平均分为综合测评,增加"排名"属性,并按排名排序 "11_1_1.csv","11_2_1.csv"是两个不同班级的学生 setwd('D:\\data') #读取数据 dat1=read.csv('./11_1_1.csv',he=T) dat2=read.csv('./11_2_1.csv',he=T) result

学生成绩的排名

package com.paixu; public class Student { String name; int score; public Student(String name, int score) { super(); this.name = name; this.score = score; } public String getName() { return name; } public void setName(String name) { this.name = name;

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

PAT_B_1004 成绩排名

题目描述: 读入 n(>0)名学生的姓名.学号.成绩,分别输出成绩最高和成绩最低学生的姓名和学号. 输入格式: 每个测试输入包含 1 个测试用例,格式为 第 1 行:正整数 n 第 2 行:第 1 个学生的姓名 学号 成绩 第 3 行:第 2 个学生的姓名 学号 成绩 ... ... ... 第 n+1 行:第 n 个学生的姓名 学号 成绩 其中姓名和学号均为不超过 10 个字符的字符串,成绩为 0 到 100 之间的一个整数,这里保证在一组测试用例中没有两个学生的成绩是相同的. 输出格式: 对