hdu 1236 排名(字典序排序)

2023-11-08 12:18
文章标签 排序 排名 字典 hdu 1236

本文主要是介绍hdu 1236 排名(字典序排序),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

1、题目不难,学会一个字典序排序,http://acm.hdu.edu.cn/showproblem.php?pid=1236

2、

排名

Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others)
Total Submission(s): 12250    Accepted Submission(s): 4579


Problem Description
今天的上机考试虽然有实时的Ranklist,但上面的排名只是根据完成的题数排序,没有考虑 
每题的分值,所以并不是最后的排名。给定录取分数线,请你写程序找出最后通过分数线的 
考生,并将他们的成绩按降序打印。 

Input
测试输入包含若干场考试的信息。每场考试信息的第1行给出考生人数N ( 0 < N 
< 1000 )、考题数M ( 0 < M < = 10 )、分数线(正整数)G;第2行排序给出第1题至第M题的正整数分值;以下N行,每行给出一 
名考生的准考证号(长度不超过20的字符串)、该生解决的题目总数m、以及这m道题的题号 
(题目号由1到M)。 
当读入的考生人数为0时,输入结束,该场考试不予处理。 

Output
对每场考试,首先在第1行输出不低于分数线的考生人数n,随后n行按分数从高 
到低输出上线考生的考号与分数,其间用1空格分隔。若有多名考生分数相同,则按他们考 
号的升序输出。 

Sample Input
  
4 5 25 10 10 12 13 15 CS004 3 5 1 3 CS003 5 2 4 1 3 5 CS002 2 1 2 CS001 3 2 3 5 1 2 40 10 30 CS001 1 2 2 3 20 10 10 10 CS000000000000000001 0 CS000000000000000002 2 1 2 0

Sample Output
  
3 CS003 60 CS001 37 CS004 37 0 1 CS000000000000000002 20
3、代码:
#include<stdio.h>
#include<string.h>
#include<algorithm>
using namespace std;
int g[15];
struct node
{char name[25];int grade;
} a[1005];
int cmp(node a,node b)
{if(a.grade==b.grade)return strcmp(a.name,b.name)<0?1:0; //按字典序升序//return a.name<b.name;//不能这么排序elsereturn a.grade>b.grade;
}
int main()
{int n,m,G,p,c;while(scanf("%d",&n)!=EOF){memset(g,0,sizeof(g));//memset(a,0,sizeof(a));for(int i=0;i<1005;i++){a[i].grade=0;}int count=0;if(n==0)break;scanf("%d%d",&m,&G);for(int i=1; i<=m; i++)scanf("%d",&g[i]);for(int i=1; i<=n; i++){scanf("%s%d",a[i].name,&p);for(int j=1; j<=p; j++){scanf("%d",&c);a[i].grade+=g[c];// printf("%d\n",a[i].grade);}if(a[i].grade>=G)count++;elsea[i].grade=-1;}sort(a+1,a+n+1,cmp);printf("%d\n",count);for(int i=1;i<=n;i++){if(a[i].grade==-1)break;elseprintf("%s %d\n",a[i].name,a[i].grade);}}return 0;
}
/*
4 5 25
10 10 12 13 15
CS0000000000000000004 3 5 1 3
CS003 5 2 4 1 3 5
CS002 2 1 2
CS0000000000000000001 3 2 3 5
1 2 40
10 30
CS001 1 2
3 3 20
10 10 10
CS000000000000000006 2 1 2
CS000000000000000002 2 1 2
CS000000000000000008 2 1 2
0
*/


这篇关于hdu 1236 排名(字典序排序)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/369798

相关文章

Python容器类型之列表/字典/元组/集合方式

《Python容器类型之列表/字典/元组/集合方式》:本文主要介绍Python容器类型之列表/字典/元组/集合方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录1. 列表(List) - 有序可变序列1.1 基本特性1.2 核心操作1.3 应用场景2. 字典(D

C++快速排序超详细讲解

《C++快速排序超详细讲解》快速排序是一种高效的排序算法,通过分治法将数组划分为两部分,递归排序,直到整个数组有序,通过代码解析和示例,详细解释了快速排序的工作原理和实现过程,需要的朋友可以参考下... 目录一、快速排序原理二、快速排序标准代码三、代码解析四、使用while循环的快速排序1.代码代码1.由快

Spring排序机制之接口与注解的使用方法

《Spring排序机制之接口与注解的使用方法》本文介绍了Spring中多种排序机制,包括Ordered接口、PriorityOrdered接口、@Order注解和@Priority注解,提供了详细示例... 目录一、Spring 排序的需求场景二、Spring 中的排序机制1、Ordered 接口2、Pri

大数据小内存排序问题如何巧妙解决

《大数据小内存排序问题如何巧妙解决》文章介绍了大数据小内存排序的三种方法:数据库排序、分治法和位图法,数据库排序简单但速度慢,对设备要求高;分治法高效但实现复杂;位图法可读性差,但存储空间受限... 目录三种方法:方法概要数据库排序(http://www.chinasem.cn对数据库设备要求较高)分治法(常

Python中lambda排序的六种方法

《Python中lambda排序的六种方法》本文主要介绍了Python中使用lambda函数进行排序的六种方法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们... 目录1.对单个变量进行排序2. 对多个变量进行排序3. 降序排列4. 单独降序1.对单个变量进行排序

python 字典d[k]中key不存在的解决方案

《python字典d[k]中key不存在的解决方案》本文主要介绍了在Python中处理字典键不存在时获取默认值的两种方法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,... 目录defaultdict:处理找不到的键的一个选择特殊方法__missing__有时候为了方便起见,

关于Java内存访问重排序的研究

《关于Java内存访问重排序的研究》文章主要介绍了重排序现象及其在多线程编程中的影响,包括内存可见性问题和Java内存模型中对重排序的规则... 目录什么是重排序重排序图解重排序实验as-if-serial语义内存访问重排序与内存可见性内存访问重排序与Java内存模型重排序示意表内存屏障内存屏障示意表Int

【数据结构】——原来排序算法搞懂这些就行,轻松拿捏

前言:快速排序的实现最重要的是找基准值,下面让我们来了解如何实现找基准值 基准值的注释:在快排的过程中,每一次我们要取一个元素作为枢纽值,以这个数字来将序列划分为两部分。 在此我们采用三数取中法,也就是取左端、中间、右端三个数,然后进行排序,将中间数作为枢纽值。 快速排序实现主框架: //快速排序 void QuickSort(int* arr, int left, int rig

usaco 1.3 Mixing Milk (结构体排序 qsort) and hdu 2020(sort)

到了这题学会了结构体排序 于是回去修改了 1.2 milking cows 的算法~ 结构体排序核心: 1.结构体定义 struct Milk{int price;int milks;}milk[5000]; 2.自定义的比较函数,若返回值为正,qsort 函数判定a>b ;为负,a<b;为0,a==b; int milkcmp(const void *va,c

poj 3974 and hdu 3068 最长回文串的O(n)解法(Manacher算法)

求一段字符串中的最长回文串。 因为数据量比较大,用原来的O(n^2)会爆。 小白上的O(n^2)解法代码:TLE啦~ #include<stdio.h>#include<string.h>const int Maxn = 1000000;char s[Maxn];int main(){char e[] = {"END"};while(scanf("%s", s) != EO