hdu 1236 排名(排序)

题意:按成绩排序

思路:排序

#include<iostream>
#include<stdio.h>
#include<string.h>
#include<algorithm>
using namespace std;

struct node{
    char name[25];
    int grade;
}a[1005];

bool cmp(node a,node b){
    if(a.grade!=b.grade)return a.grade>b.grade;//降序
    return strcmp(a.name,b.name)<0;//升序
}

int main(){
    int n,m,g,i;
    int sco[15];
    int m2,num;
    int sum;

    while(~scanf("%d",&n)&&n){
        memset(a,0,sizeof(a));
        sum=0;
        scanf("%d%d",&m,&g);
        for(i=1;i<=m;++i)
            scanf("%d",&sco[i]);
        for(i=0;i<n;++i){
            scanf("%s",a[i].name);
            scanf("%d",&m2);
            while(m2--){
                scanf("%d",&num);
                a[i].grade+=sco[num];
            }
            if(a[i].grade>=g)++sum;
        }
        sort(a,a+n,cmp);
        printf("%d\n",sum);
        for(i=0;i<n;++i){
            if(a[i].grade<g)break;
            printf("%s %d\n",a[i].name,a[i].grade);
        }
    }
    return 0;
}

时间: 2024-10-04 06:20:21

hdu 1236 排名(排序)的相关文章

HDU 1236 排名 (排序+结构体)

#include <stdio.h> #include <iostream> #include <string.h> #include <algorithm> using namespace std; struct stu { char test[25]; int numm; int right[10]; int total; }student[1001]; int cmp(stu a,stu b) { if(a.total != b.total) retu

hdu 1236 排名

http://acm.hdu.edu.cn/showproblem.php?pid=1236 自己写的comp,终于勉强算是掌握sort()了...囧...继续努力~ 1 #include<stdio.h> 2 #include<string.h> 3 #include<algorithm> 4 using namespace std; 5 struct St 6 { 7 char s[30]; 8 int sum,p; 9 }; 10 bool comp(struct

杭电 HDU 1236 排名

排名 Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others) Total Submission(s): 17116    Accepted Submission(s): 6167 Problem Description 今天的上机考试虽然有实时的Ranklist,但上面的排名只是根据完成的题数排序,没有考虑 每题的分值,所以并不是最后的排名.给定录取分数线,请你写程序找出最后通过分数线

排名(hdu 1236)

http://acm.hdu.edu.cn/showproblem.php?pid=1236 排名 Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others) Total Submission(s): 18409    Accepted Submission(s): 6692 Problem Description 今天的上机考试虽然有实时的Ranklist,但上面的排名只是根据完成的题数

HDU 1862 EXCEL排序 (排序水题)

Problem Description Excel可以对一组纪录按任意指定列排序.现请你编写程序实现类似功能. Input 测试输入包含若干测试用例.每个测试用例的第1行包含两个整数 N (<=100000) 和 C,其中 N 是纪录的条数,C 是指定排序的列号.以下有 N 行,每行包含一条学生纪录.每条学生纪录由学号(6位数字,同组测试中没有重复的学号).姓名(不超过8位且不包含空格的字符串).成绩(闭区间[0, 100]内的整数)组成,每个项目间用1个空格隔开.当读到 N=0 时,全部输入结

hdu 2020 绝对值排序

题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=2020 题目大意:按照绝对值大小从大到小排序,注意输出两个数之间要用空格隔开,在这里引入一个冒泡排序,两个循环即可! 1 #include <stdio.h> 2 #include <math.h> 3 int main () 4 { 5 int n,a[100],i,j,t; 6 while (scanf("%d",&n),n) 7 { 8 for (i=0

HDU 4857 拓扑排序 优先队列

n个数,已经有大小关系,现给m个约束,规定a在b之前,剩下的数要尽可能往前移.输出序列 大小关系显然使用拓扑结构,关键在于n个数本身就有大小关系,那么考虑反向建图,优先选择值最大的入度为零的点,这样得到的序列就是从大到小的,最后倒序输出就行了. 写这题的时候头好痛阿肚子好痛阿,再也不想熬夜了,一点效率都没有. /** @Date : 2017-09-29 19:29:12 * @FileName: HDU 4857 拓扑排序 + 优先队列.cpp * @Platform: Windows * @

hdu 1236 1.3.2排名

排名 Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others) Total Submission(s): 3690 Accepted Submission(s): 1171   Problem Description 今天的上机考试虽然有实时的Ranklist,但上面的排名只是根据完成的题数排序,没有考虑 每题的分值,所以并不是最后的排名.给定录取分数线,请你写程序找出最后通过分数线的 考生,

HDU 5638 拓扑排序+优先队列

题目链接: http://acm.hdu.edu.cn/showproblem.php?pid=5638 题意: 给你一个DAG图,删除k条边,使得能个得到字典序尽可能小的拓扑排序 题解: 把拓扑排序的算法稍微改一下,如果某个顶点的入度小于k也把它加到优先队列里面去. k减小后队列里面会有些点不满足<=k,直接踢出来就好了. 代码: #include<iostream> #include<cstring> #include<cstdio> #include<