HDU1236 排名 题解
每题的分值,所以并非最后的排名。给定录取分数线。请你敲代码找出最后通过分数线的
考生,并将他们的成绩按降序打印。
< 1000 )、考题数M ( 0 < M < = 10 )、分数线(正整数)G;第2行排序给出第1题至第M题的正整数分值;下面N行。每行给出一
名考生的准考证号(长度不超过20的字符串)、该生解决的题目总数m、以及这m道题的题号
(题目号由1到M)。
当读入的考生人数为0时,输入结束,该场考试不予处理。
到低输出上线考生的考号与分数,其间用1空格分隔。若有多名考生分数同样。则按他们考
号的升序输出。
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
3
CS003 60
CS001 37
CS004 37
0
1
CS000000000000000002 20
思路:都会的思路;
不是思路难,是有点繁的题目,速度是关键。
这种题目是用来训练细心和编码速度的。
#include <cstdio>
#include <cstdlib>
#include <algorithm>
using namespace std; struct Stu
{
char *num;
int grade;
bool operator<(const Stu b) const
{
if (grade == b.grade) return strcmp(num, b.num) == -1;
return grade > b.grade;
}
}; Stu stus[1001];//N
int grades[12];//M
char stuNum[22]; int main()
{
int N, M, G;
while (scanf("%d %d %d", &N, &M, &G) == 3)
{
for (int i = 1; i <= M; i++)
{
scanf("%d", &grades[i]);
}
int count = 0;
for (int i = 0; i < N; i++)
{
int totalGra = 0, totalNum = 0, m, id;
scanf("%s %d", stuNum, &m);
for (int j = 0; j < m; j++)
{
scanf(" %d", &id);//没看清楚题意就动手,以至浪费时间
totalGra += grades[id];
}
if (totalGra >= G)
{
stus[count].grade = totalGra;
stus[count].num = (char *) malloc(sizeof(stuNum)+1);
strcpy(stus[count].num, stuNum);
count++;
}
}
sort(stus, stus+count);
printf("%d\n", count);
for (int j = 0; j < count; j++)
{
printf("%s ", stus[j].num);
printf("%d\n", stus[j].grade);
free(stus[j].num);
}
}
return 0;
}
HDU1236 排名 题解的更多相关文章
- HDU-1236 排名
http://acm.hdu.edu.cn/showproblem.php?pid=1236 学会怎样按字典序排序的模板. 排名 Time Limit: 2000/1000 MS (Java/Othe ...
- hdu1236 排名(结构体排序)
排名 Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others) Total Submiss ...
- Codeforces Round #307 (Div. 2) A. GukiZ and Contest 水题
A. GukiZ and Contest Time Limit: 20 Sec Memory Limit: 256 MB 题目连接 http://codeforces.com/contest/551/ ...
- [CF1066C]Books Queries
题目大意:维护一个数列,要求在左边插入一个数,在右边插入一个数,查询一个数的排名 题解:可以双指针,开个数组存每个数的位置 卡点:无 C++ Code: #include <cstdio> ...
- 【洛谷P2584】【ZJOI2006】GameZ游戏排名系统题解
[洛谷P2584][ZJOI2006]GameZ游戏排名系统题解 题目链接 题意: GameZ为他们最新推出的游戏开通了一个网站.世界各地的玩家都可以将自己的游戏得分上传到网站上.这样就可以看到自己在 ...
- HDU1236:排名
Problem Description 今天的上机考试虽然有实时的Ranklist,但上面的排名只是根据完成的题数排序,没有考虑 每题的分值,所以并不是最后的排名.给定录取分数线,请你写程序找出最后 ...
- 题解报告:hdu 2093 考试排名
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=2093 Problem Description C++编程考试使用的实时提交系统,具有即时获得成绩排名的 ...
- 题解报告:hdu 1236 排名
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1236 Problem Description 今天的上机考试虽然有实时的Ranklist,但上面的排名 ...
- 2016 华南师大ACM校赛 SCNUCPC 非官方题解
我要举报本次校赛出题人的消极出题!!! 官方题解请戳:http://3.scnuacm2015.sinaapp.com/?p=89(其实就是一堆代码没有题解) A. 树链剖分数据结构板题 题目大意:我 ...
随机推荐
- JAVA基础——数据流
DataInputStream 类和DataOutputStream 类 在前面的学习中,我们知道数据流处理的数据都是指字节或字节数组,但实际上很多时候不是这样的,它需要数据流能直接读.写各种各样的j ...
- C#语言中循环分类总结
C#语言中,循环主要分为4种,分别是:while循环.do while循环.for循环.foeach循环.下面我将分类对循环语句总结. 1.while循环: 如果循环条件为真,则执行循环体:执行完循环 ...
- mysql通配符进行模糊查询
在mysql数据库中,当我们需要模糊查询的时候 ,我们会使用到通配符. 首先我们来了解一下2个概念,一个是操作符,一个是通配符. 操作符 like就是SQL语句中的操作符,它的作用是指示在SQL语句后 ...
- 安装bitcore
官网----------------------------------------------https://bitcore.io先安装好 node.js v4, npmsudo npm inst ...
- MySQL-----用户和授权管理
用户管理: 创建用户: create user '用户名'@'用户pc的ip地址(ip可以写精准点的,也可以是网段的,也可以写一个‘’%‘’提所有)' identified(设置密码) by '密码 ...
- python的学习之路(三)
一.set集合#!/usr/bin/env python# *_*coding:utf-8 *_*# Author: harson old_dict = { "#1": {'hos ...
- 如何用photoshop输出html网页
如何用photoshop输出html网页 首先得先对PSD文件做切片,有两种方法: ①使用工具栏上的"切片工具", 然后在图象上划出一块一块的区域. ②使用基于参考线的切片,按ct ...
- 将 Oracle VirtualBox 中运行的虚拟机导入 VMware Fusion、Workstation 或 Player
1.从virtualbox种导出电脑为 .ova格式镜像 要导入 Oracle VirtualBox 中运行的虚拟机,必须将该虚拟机从 VirtualBox 导出到开放虚拟化格式存档(.ova 文件) ...
- 修改windows 2012/win8、win7远程桌面连接默认端口的方法
远程桌面连接服务基于端口3389,入侵者一般先扫描主机开放端口,一旦发现其开放了3389端口,就会进行下一步的入侵,所以我们只需要修改该务默认端口就可以避开大多数入侵者的耳目. 修改windows 2 ...
- hihoCoder#1036 Trie图
原题地址 看了这篇博文,总算是把Trie图弄明白了 Runtime Error了无数次,一直不知道为什么,于是写了个脚本生成了一组大数据,发现果然段错误了. 调试了一下午,总算闹明白了,为什么呢? 1 ...