解题报告:

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

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

 #include<cstdio>
#include<cstring>
#include<cmath>
#include<algorithm> typedef int INT;
struct node {
char name[]; int n; //记录过的题数
int sTime; //记录总的时间
node() {
n = sTime = ; //将时间和题数初始化
}
};
bool cmp(node a,node b) { //排序函数
if(a.n>b.n)
return true;
else if(a.n<b.n)
return false;
else if(a.n == b.n) {
if(a.sTime<b.sTime)
return true;
else if(a.sTime>b.sTime)
return false;
else if(a.sTime == b.sTime) {
if(strcmp(a.name,b.name)==-)
return true;
else return false;
}
}
} int main( ) {
int n,p; //p表示做错一题罚的时间分
scanf("%d%d",&n,&p);
char str[];
node stu[];
int num = ;
while(scanf("%s",str)!=EOF) {
strcpy(stu[num].name,str);
for(int i = ;i<n;++i) {
scanf("%s",str);
int len = strlen(str);
int flag = ,l1,l2;
for(int j = ;j<len;++j) { //先做一遍预处理,判断是否存在括号,
if(str[j] == '(') { //如果存在,记录前括号跟后括号的位置
flag = ;
l1 = j;
}
if(str[j] == ')')
l2 = j;
}
if(!flag) { //对于没有括号的情况的处理
if(atoi(str)>) {
stu[num].n++;
stu[num].sTime+=atoi(str);
}
}
else { //对于有括号的情况的处理
char str1[],str2[];
int s1 = ;
for(;s1<l1;++s1)
str1[s1] = str[s1];
str1[s1] = NULL;
s1 = ;
for(;s1<l2-l1-;++s1)
str2[s1] = str[s1+l1+];
str2[s1] = NULL;
stu[num].n++;
stu[num].sTime+= atoi(str1)+p*atoi(str2);
}
}
num++; //学生数加一
}
std::sort(stu,stu+num,cmp);
for(int i = ;i<num;++i)
printf("%-10s %2d %4d\n",stu[i].name,stu[i].n,stu[i].sTime);
//%号后加-表示左对齐 ,注意输出后不换行
return ;
}

HDU 2093 考试排名 模拟题的更多相关文章

  1. 题解报告:hdu 2093 考试排名

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=2093 Problem Description C++编程考试使用的实时提交系统,具有即时获得成绩排名的 ...

  2. HDOJ(HDU) 2093 考试排名(Arrays.sort排序、类的应用)

    Problem Description C++编程考试使用的实时提交系统,具有即时获得成绩排名的特点.它的功能是怎么实现的呢? 我们做好了题目的解答,提交之后,要么"AC",要么错 ...

  3. HDU——2093考试排名(string类及其函数的运用以及istringstream)

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

  4. HDU 1262 寻找素数对 模拟题

    题目描述:输入一个偶数,判断这个偶数可以由哪两个差值最小的素数相加,输出这两个素数. 题目分析:模拟题,注意的是为了提高效率,在逐个进行判断时,只要从2判断到n/2就可以了,并且最好用打表法判断素数. ...

  5. [考试]NOIP2015模拟题2

    // 此博文为迁移而来,写于2015年7月22日,不代表本人现在的观点与看法.原始地址:http://blog.sina.com.cn/s/blog_6022c4720102w72i.html 1.总 ...

  6. HDU 2521 反素数 模拟题

    解题报告:水题,直接附上代码,只是觉得这题的作者是不是吃饱了饭撑的,反素数的概念跟这题一点关系都没有. #include<cstdio> int judge1(int k) { ; ;i& ...

  7. HDU 1256 画8 模拟题

    解题报告:这题我觉得题目有一个没有交代清楚的地方就是关于横线的字符的宽度的问题,题目并没有说,事实上题目要求的是在保证下面的圈高度不小于上面的圈的高度的情况下,横线的宽度就是等于下面的圈的高度. #i ...

  8. HDU 4022 Bombing STL 模拟题

    人工模拟.. #include<stdio.h> #include<iostream> #include<algorithm> #include<vector ...

  9. hdu 4515 年月份模拟题

    小Q系列故事——世界上最遥远的距离 Time Limit: 500/200 MS (Java/Others)    Memory Limit: 65535/32768 K (Java/Others) ...

随机推荐

  1. centos crontab 计划任务 设置与查看

    centos 上 crontab 计划任务 ,这个版本解释的比较清晰 林涛 发表于:2017-4-27 11:11 分类:26点 标签:crontab,Linux,计划任务 36次 这个版本的cron ...

  2. SCRUM 12.14

    由于最近的课业较多,大家平时有些力不从心,对于工作完成得有限. 最近课业压力小了一些,我们决定从今天起,投入精力. 以下为我们的任务分配情况: 人员 任务 高雅智 清除缓存 彭林江 统计活跃用户数量 ...

  3. 四则运算ver.mk2

    package size; import java.awt.EventQueue; import javax.swing.JFrame; import javax.swing.JMenuBar; im ...

  4. JDBC的编码步骤

    0.前提:拷贝数据库的驱动到构建路径中(classpath) 1.注册驱动 2.获取与数据库的链接 3.创建代表SQL语句的对象 4.执行SQL语句 5.如果是查询语句,需要遍历结果集 6.释放占用的 ...

  5. [转帖]ESXi 网卡绑定 增加吞吐量的方法

    VMware ESX 5.0 网卡负载均衡配置3种方法 http://blog.chinaunix.net/uid-186064-id-3984942.html (1) 基于端口的负载均衡 (Rout ...

  6. c语言和c++有什么区别

    差不多是win98跟winXP的关系.C++是在C的基础上增加了新的理论,玩出了新的花样.所以叫C加加. C是一个结构化语言,它的重点在于算法和数据结构.C程序的设计首要考虑的是如何通过一个过程,对输 ...

  7. Java设计模式之代理模式(静态代理和JDK、CGLib动态代理)以及应用场景

    我做了个例子 ,需要可以下载源码:代理模式 1.前言: Spring 的AOP 面向切面编程,是通过动态代理实现的, 由两部分组成:(a) 如果有接口的话 通过 JDK 接口级别的代理 (b) 如果没 ...

  8. XShell中文乱码问题解决

    现象:XShell终端中输入中文显示乱码 原因:XShell终端的编码格式与服务器不同 解决:修改XShell终端的编码格式:菜单中点击,文件->属性->终端->编码,选择“UTF- ...

  9. 初识elasticsearch_2(查询和整合springboot)

    初始化 首先将官网所下载的json文件,放入到es中,采用如下命令: curl -H "Content-Type: application/json" -XPOST 'localh ...

  10. 洛谷 P4112 [HEOI2015]最短不公共子串 解题报告

    P4112 [HEOI2015]最短不公共子串 题目描述 在虐各种最长公共子串.子序列的题虐的不耐烦了之后,你决定反其道而行之. 一个串的"子串"指的是它的连续的一段,例如bcd是 ...