考试排名

Time Limit: 1000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)
Total Submission(s): 2444 Accepted Submission(s): 864
 
Problem Description
C++编程考试使用的实时提交系统,具有即时获得成绩排名的特点。它的功能是怎么实现的呢?
我们做好了题目的解答,提交之后。要么“AC”,要么错误,无论如何错法,总是给你记上一笔,表明你以前有过一次错误提交,因而当你一旦提交该题“AC”后,就要与你算一算帐了,总共该题错误提交了几回。尽管你在题数上,大步地跃上了一个台阶,可是在耗时上要摊上你共花去的时间。特别是。以前有过的错误提交,每次都要摊上一定的单位时间分。这样一来,你在做出的题数上,可能率先别人非常多,可是。在做出相同题数的人群中,你可能会在耗时上处于排名的劣势。

比如:某次考试一共8题(A,B。C。D,E,F,G。H)。每一个人做的题都在相应的题号下有个数量标记,负数表示该学生在该题上有过的错误提交次数,但到如今还没有AC,正数表示AC所耗的时间。假设正数a跟上一对括号。里面有个整数b,那就表示该学生提交该题AC了,耗去了时间a。同一时候。以前错误提交了b次。因此对于下述输入数据:

若每次错误提交的罚分为20分,则其排名从高到低应该是这种:
Josephus 5 376
John 4 284
Alice 4 352
Smith 3 167
Bob 2 325
Bush 0 0

Input
输入数据的第一行是考试题数n(1≤n≤12)以及单位罚分数m(10≤m≤20),每行数据描写叙述一个学生的username(不多于10个字符的字串)以及对全部n道题的答题现状,其描写叙述採用问题描写叙述中的数量标记的格式,见上面的表格。提交次数总是小于100,AC所耗时间总是小于1000。
Output
将这些学生的考试现状,输出一个实时排名。实时排名显然先按AC题数的多少排,多的在前,再按时间分的多少排,少的在前,假设凑巧前两者都相等。则按名字的字典序排。小的在前。

每一个学生占一行,输出名字(10个字符宽),做出的题数(2个字符宽。右对齐)和时间分(4个字符宽,右对齐)。名字、题数和时间分相互之间有一个空格。

Sample Input
8 20
Smith     -1    -16 8   0   0   120 39  0
John      116   -2  11  0   0   82  55(1)   0
Josephus  72(3) 126 10  -3  0   47  21(2)   -2
Bush      0 -1  -8  0   0   0   0   0
Alice     -2    67(2)   13  -1  0   133 79(1)   -1
Bob   0 0   57(5)   0   0   168 -7  0

Sample Output
Josephus    5  376
John        4  284
Alice       4  352
Smith       3  167
Bob         2  325
Bush        0    0

解析:这道题在杭电上属于简单题,可是做起来好麻烦。最恶心的就是格式问题了,只是涉及的东西还比較多,我认为不失为经典题哈!
#include <iostream>
#include <string>
#include <algorithm>
#include <iomanip>
using std::endl;
using std::cin;
using std::cout;
using std::string;
using std::sort;
using std::setw;
using std::ios;
const int MAXN = 1000;
struct student{string name;int numSolved;int time;
}stu[MAXN];
//处理字符串的函数
int strtoint(string s , int penaltyTime)
{int value=0 , sum=0;for(int i=0; i<s.length(); ++i){if(s[i]=='('){sum+=value;value = 0;}else if(s[i]==')'){sum+=(value*penaltyTime);}else{value=value*10+(s[i]-'0');} }return sum > value ? sum:value;
}
//排序函数
bool cmp(student a , student b)
{if(a.numSolved > b.numSolved)return true;if(a.numSolved == b.numSolved)return a.time < b.time;if(a.numSolved==b.numSolved && a.time == b.time)return a.name < b.name;return false;
}
int main()
{
#ifdef LOCALfreopen("input.txt" , "r" , stdin);
#endifint n , penaltyTime;cin >> n >> penaltyTime;string name , str;int m = 0;//输入while(cin >> name){stu[m].name = name;for(int i=0; i<n; ++i){cin >> str;if(str[0] >'0'){stu[m].numSolved++;stu[m].time += strtoint(str , penaltyTime);}}m++;}//排序sort(stu , stu+m , cmp);//输出for(int i=0; i<m; ++i){//控制左对齐cout.flags(ios::left);//控制占用字符cout << setw(10) << stu[i].name << " ";//控制右对齐cout.flags(ios::right);//控制字符和输出格式cout << setw(2) << stu[i].numSolved << " ";cout << setw(4) << stu[i].time;cout << endl;}return 0;
}

HDU2093--考试排名相关推荐

  1. HDU2093 考试排名【排序】

    考试排名 Time Limit: 1000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others) Total Submissi ...

  2. HDU2093 考试排名

    考试排名 Time Limit: 1000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others) Total Submi ...

  3. 2021贵州毕节高考成绩查询,2021贵州毕节选调生考试排名查询入口-时间(已开通)...

    2021贵州选调生笔试于3月27日结束,现在已进入4月27日,贵州毕节选调生考试排名已发布,为了让考生们了解毕节选调生考试成绩查询入口, 中公贵州选调生考试网为您整理于此,现整理相关入口如下,考生们可 ...

  4. 1339: 考试排名

    //几个月前做的,数据处理类型题目 1339: 考试排名 Time Limit: 1 Sec Memory Limit: 128 MB Submit: 114 Solved: 34 [Submit][ ...

  5. 结构体排序二~1339: 考试排名(带技巧的输入)

    zcmu 1339: 考试排名 Time Limit: 1 Sec Memory Limit: 128 MB Description C++编程考试使用的实时提交系统,具有即时获得成绩排名的特点.它的 ...

  6. 计算机考试不在学籍库,有消息!中考报名将由学籍库直接导入,取消学校考试排名........

    原标题:有消息!中考报名将由学籍库直接导入,取消学校考试排名..... 最新中考日程 各初中校的中考均分,是家长在择校时的重要依据,甚至已经成为了唯一依据.而面对每年小升初时,如雪花般飞舞.名目繁多的 ...

  7. 向大佬学习C语言1198: 考试排名(二)(结构体专题)

    题目 1198: 考试排名(二)(结构体专题) 时间限制: 1 Sec 内存限制: 128 MB 提交: 3737 解决: 728ACM 国际大学生程序设计竞赛,英文全称:ACM Internatio ...

  8. 考试排名(结构体专题)

    考试排名(结构体专题) 题目描述 今天浙大研究生复试的上机考试跟传统笔试的打分规则相似,总共有n道题,每道题有对应分值,最后计算总成绩.现给定录取分数线,请你写程序找出最后通过分数线的考生,并将他们的 ...

  9. 1197: 考试排名(一)(结构体专题)

    1197: 考试排名(一)(结构体专题) 时间限制: 1 Sec  内存限制: 128 MB 提交: 59  解决: 70 [提交] [状态] [讨论版] [命题人:eilene] 题目描述 今天浙大 ...

  10. 考试排名(一)(结构体专题)

    考试排名(一)(结构体专题) 题目描述 今天浙大研究生复试的上机考试跟传统笔试的打分规则相似,总共有n道题,每道题有对应分值,最后计算总成绩.现给定录取分数线,请你写程序找出最后通过分数线的考生,并将 ...

最新文章

  1. 《C语言及程序设计》实践参考——水仙花数
  2. 翻译连载 | 第 10 章:异步的函数式(下)-《JavaScript轻量级函数式编程》 |《你不知道的JS》姊妹篇...
  3. GeoServer+MySQL安装及配置过程
  4. Java,开源,分享
  5. Python 技术篇-用flask服务实现mac本地文件上传至windows服务器指定文件夹下实例演示
  6. python报告 No module named 'main'错误
  7. python中与label类似的控件是_python中tkinter的使用(控件整理)(一)
  8. iframe之间操作记录
  9. keil交通灯c语言,用Keilc软件设计一个交通灯程序C程序
  10. java疯狂讲义精粹第2版_疯狂Java讲义精粹(第2版)(含CD光盘1张)
  11. 大数据收集系统架构图
  12. 《CSS实战案例汇总》涟漪
  13. 电子白板计算机培训心得,电子白板培训心得体会(精选5篇)
  14. 如何在 Ubuntu 上配置 ROS和LPMS IMU传感器
  15. excel白屏未响应_「excel打开空白」Excel 2016 打开后空白的解决方法 - seo实验室
  16. mongo写入mysql_从mysql读取数据写入mongo
  17. 攻防世界MISC之掀桌子
  18. windows系统库
  19. php中实现图片自动轮播,基于vue.js实现图片轮播效果
  20. 敏捷项目管理21天学习计划--Scrum

热门文章

  1. 字符串中拼接v-for_C#中几种拼接字符串的方法
  2. 一种一致性HASH算法的实现方法,附核心代码
  3. RNA_seq(1)植物转录组实战(中)之subread工具进行序列比对和转录组生物学定量
  4. 【Gym-101908 B】Marbles【SG函数】
  5. java中的 关键词vali_Java中的关键字volatile详解
  6. php画弧,75、PHP图像处理之画圆、弧线、网站饼状统计图绘制
  7. eslint 换行_给 eslint 写一个插件
  8. lc滤波器是利用电感的感抗_电感器在电路中的应用特性
  9. JAVA8内存最多设置多少,堆内存居高不下,JDK8自适应作怪
  10. Spring事务(4):事务属性之7种传播行为