博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
HDU 2093 考试排名 模拟题
阅读量:5334 次
发布时间:2019-06-15

本文共 1624 字,大约阅读时间需要 5 分钟。

解题报告:

题目描述:写一个程序给一个编程考试C++实时提交系统排名,给你的数据是题目的总数,每次错误提交罚的时间分,每位用户的姓名,然后是输入用户每题的完成情况,有一下几种情况,第一,输入只有一个正值,表示该题只有一次提价记录,且已经AC了,第二,有一个正值,并且,正值后面有一个括号,括号里面有一个数字,前面的正值表示AC该题所用的时间,后面括号里面的数表示总共有多少次错误的提交记录,第三,只有一个负数,表示该题提交了这个负数的绝对值次,但还没有AC,第四,只有一个0,表示该题没有提交记录,对于每一题,如果已经AC了,但是有错误的提交记录,就要将每一次错误的提交记录都罚一定的时间,并且算进总的用时里面。要你给这个比赛结果进行排名,要求是首先按照AC的题数,AC题多的人排前面,如果AC的题目数量相同,则按照总的用时,用时少的人排前面,如果AC题数跟用时都相同的话,按照名字的字典序排列。

一个模拟题,就是对输入的处理比较麻烦,可以在每次输入一个做题情况时,将输入先做一个预处理,先判断有没有括号。然后还要注意的就是如果有错误的提交但是到最后没有AC,则该题不罚时。输出的时候注意最后没有换行,不然就PE。

1 #include
2 #include
3 #include
4 #include
5 6 typedef int INT; 7 struct node { 8 char name[100]; 9 int n; //记录过的题数 10 int sTime; //记录总的时间 11 node() {12 n = sTime = 0; //将时间和题数初始化 13 }14 };15 bool cmp(node a,node b) { //排序函数 16 if(a.n>b.n)17 return true;18 else if(a.n
b.sTime)24 return false;25 else if(a.sTime == b.sTime) {26 if(strcmp(a.name,b.name)==-1)27 return true;28 else return false;29 }30 }31 }32 33 int main( ) {34 int n,p; //p表示做错一题罚的时间分 35 scanf("%d%d",&n,&p);36 char str[100];37 node stu[1005];38 int num = 0;39 while(scanf("%s",str)!=EOF) {40 strcpy(stu[num].name,str);41 for(int i = 0;i
0) {55 stu[num].n++;56 stu[num].sTime+=atoi(str);57 }58 }59 else { //对于有括号的情况的处理 60 char str1[100],str2[100];61 int s1 = 0;62 for(;s1
View Code

 

转载于:https://www.cnblogs.com/xiaxiaosheng/p/3200058.html

你可能感兴趣的文章
vue - 生命周期
查看>>
SQL Server用户权限详解
查看>>
Python正则表达式
查看>>
Linux进程间通信--命名管道
查看>>
UVa 10970 - Big Chocolate
查看>>
js输出
查看>>
set,env,export,set -x,set -e;
查看>>
H5多文本换行
查看>>
HAL层三类函数及其作用
查看>>
Odoo 去掉 恼人的 "上午"和"下午"
查看>>
web@h,c小总结
查看>>
java编程思想笔记(一)——面向对象导论
查看>>
Data Structure 基本概念
查看>>
Ubuntu改坏sudoers后无法使用sudo的解决办法
查看>>
NEYC 2017 游记
查看>>
[搬运] 写给 C# 开发人员的函数式编程
查看>>
Python之旅Day14 JQuery部分
查看>>
core--线程池
查看>>
redux-effect
查看>>
Swift和OC混编
查看>>