http://acm.hdu.edu.cn/showproblem.php?pid=1236

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
题解:
字符串排序:1. 找到两个字符串的最长公共前缀 2. 比较公共前缀后面那个字符的大小即可
计算分数的和:

for(int j=1; j<=s[i].m; j++){int x;scanf("%d",&x);s[i].add+=q[x].score;}

代码:
#include <bits/stdc++.h>using namespace std;const int maxn = 1e5+10;
int N,M,G;struct Students
{char id[21];int m;int add;
} s[maxn];int Com(char s1[maxn],char s2[maxn])
{int len1 = strlen(s1);int len2 = strlen(s2);int m = min(len1,len2);for(int i=0; i<m; i++){if(s1[i]-s2[i]>0)return 1;else if(s1[i]-s2[i]==0)continue;elsereturn -1;}if(len1==len2)return 0;else if(len1>len2)return 1;elsereturn -1;
}struct Q
{int score;int num;
} q[maxn];
void display()
{int sum=0;for(int i=1; i<=N; i++){if(s[i].add>=G)sum++;}printf("%d\n",sum);for(int i=1; i<=N; i++){if(s[i].add>=G)printf("%s %d\n",s[i].id,s[i].add);}
}bool cmpScore( Students& a, Students& b)
{if(a.add==b.add)return Com(a.id,b.id)<=0;elsereturn a.add>b.add;
}int main()
{while(~scanf("%d",&N)){if(N==0)break;scanf("%d%d",&M,&G);for(int i=1; i<=M; i++){scanf("%d",&q[i].score);}for(int i=1; i<=N; i++){s[i].add=0;scanf("%s%d",s[i].id,&s[i].m);for(int j=1; j<=s[i].m; j++){int x;scanf("%d",&x);s[i].add+=q[x].score;}}int L=1,R=N;sort(s+L,s+R+1,cmpScore);display();}return 0;
}

  

转载于:https://www.cnblogs.com/zlrrrr/p/9232368.html

HDU 1236 排名(Microsoft_zzt)相关推荐

  1. HDU 1236 ( 排名 )

    Problem : 1236 ( 排名 ) Judge Status : Accepted RunId : 5684884 Language : C++ Author : ssun Code Rend ...

  2. A - 排名 HDU - 1236 sort(cmp)

    A - 排名 HDU - 1236 cmp 函数写法 strcmp 返回值 #include<bits/stdc++.h> #include<iostream> #includ ...

  3. HDOJ 1236 排名(练耐心题)

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

  4. HDU 考试排名 题解 by Aze

    G - 考试排名 题解 by Aze 1. 要点 结构体 struct 数组的应用 排序 的应用 多重条件排序 %-10s 格式化输出 比较复杂的输入处理 2. 前置知识 结构体数组 struct的声 ...

  5. 杭电OJ分类题目(1)

    原题出处:HDOJ Problem Index by Type,http://acm.hdu.edu.cn/typeclass.php 杭电OJ分类题目(1) HDU Introduction HDU ...

  6. ACM模块解析之 数论

    数  论 一.简介 数论是ACM中的重点内容.历年竞赛题目,一般都有1~2道题目与数论有密切关系.数论涉及的概念和算法很多,用途也非常广泛.掌握与数论有关的方法,是参赛者需要具备的必要技能.数论的学习 ...

  7. 对表格实现修改查询html,【原生】js实现表格的增删改查

    说在前面的,写给小白白的,大神请绕道~ 今天用原生js写一下动态表格的增删改查,主要是熟悉一下js的DOM操作. 首先,做一个表格,用来显示提交的数据,如图下: 此处,我添加了编号.姓名.密码.生日. ...

  8. 排序周赛(no stl)

    这次排序禁用STL....代码写的纠结死了.不过还是因为代码功底不行 Problem A hdu 1029 此题算是数据水了点,我用100W数组来记录,然后就水过了...... #include &l ...

  9. 杭电OJ(HDU)-ACMSteps-Chapter Three-《FatMouse#39; Trade》《今年暑假不AC》《排名》《开门人和关门人》...

    http://acm.hdu.edu.cn/game/entry/problem/list.php?chapterid=1§ionid=3 1.3.1 FatMouse' Trade #include ...

最新文章

  1. word导入中的一个乱码
  2. Serverless特点及应用
  3. Apache,php配置
  4. Python+Selenium 自动化-指定chrome驱动运行selenium实例演示,运行指定位置下的浏览器驱动
  5. 【数据结构与算法】之深入解析“不同路径II”的求解思路与算法示例
  6. csdn中使用Git的一些注意问题
  7. 删除隐藏版本信息 版本回退_Qt如何给程序添加版本信息
  8. HDU1907 ZJU3113
  9. 黑历史有救了,淘宝可以改账号名了!网友:终于可以“重新做人”了
  10. DBGridEh使用技巧
  11. 小D课堂 - 新版本微服务springcloud+Docker教程_5-07 断路器dashboard监控仪表
  12. 管理系统中计算机er图怎么画,使用PowerDesigner绘制ER图的详细教程
  13. Indicate whether to send a cookie in a cross-site request by specifying its SameSite attribute
  14. python查找excel中重复数据_Python pandas 获取Excel重复记录
  15. SQL Server数据定义——模式与基本表操作
  16. Colly 爬虫学习笔记(一)——爬虫框架,抓取中金公司行业市盈率数据
  17. c语言输出26个小写英文字母,c语言题。 按顺序打印输出26个英文字母,
  18. linux自动备份oracle数据库并上传到备份服务器 脚本实现(转)
  19. Pymoo:优化算法的性能指标(Performance Indicators)
  20. 计算机应用基础165791,[2018年最新整理]人大网大计算机应用基础试题答案.doc

热门文章

  1. ipfs 云服务器_安丘ipfs服务器,ipfs云算力组装
  2. 电烙铁的焊接方法图解
  3. 深度学习与计算机视觉教程(4) | 神经网络与反向传播(CV通关指南·完结)
  4. MySQL数据库安装
  5. 房地产结构性兼并潮到来
  6. mysql查询学生表的总人数,MySQL查询练习2
  7. 手动制作linux live,使用Etcher轻松制作Linux Live Disks | MOS86
  8. 勒索软件攻击的第一步就是钓鱼邮件 从概念到防御思路 这里面都有了
  9. 自动控制系统的时域分析法——一阶系统的时域分析
  10. 自动化测试——QQ邮箱登陆