1、如果一个单元为0,表示没做过这题,不计入成绩

2、如果一个单位为负数,表示做错了这题,不计入成绩

所以只要一个单元为正数(不论是否有括号)都说明做出了这一题,计入成绩

将名字和成绩都当作字符串读入,方便处理含有括号的情况

字符串读入后检查末尾是否为')'即可分开判断有无括号的情况(如果有括号,成绩一定存在)

为了方便可以用 结构体/自定义函数/排序自定义compare函数 来实现

当然,不使用结构体可以用普通数组代替

不使用algorithm库的sort可以用冒泡选择这两种基本排序做(不会存在卡时间的情况)

做法1:C/无结构体/无sort

#include<stdio.h>
#include<string.h>
int main(){
int i,u,n,m,tm[],ac[],poi=,id,dt;
char nm[][],cd[],k;
scanf("%d%d",&n,&m);
while(scanf("%s",nm[poi])!=EOF){
tm[poi]=;
ac[poi]=;
for(i=;i<n;i++){
scanf("%d",&dt);
if(dt>){
ac[poi]++;
tm[poi]+=dt;
scanf("%c",&k);
if(k=='('){
scanf("%d%*c",&dt);
tm[poi]+=dt*m;
}
}
}
poi++;
}
for(i=;i<poi;i++)//排序
for(u=poi-;u>i;u--)
if(ac[u]>ac[u-]||ac[u]==ac[u-]&&tm[u]<tm[u-]||ac[u]==ac[u-]&&tm[u]==tm[u-]&&strcmp(nm[u-],nm[u])>){
id=ac[u];
ac[u]=ac[u-];
ac[u-]=id;
id=tm[u];
tm[u]=tm[u-];
tm[u-]=id;
strcpy(cd,nm[u]);
strcpy(nm[u],nm[u-]);
strcpy(nm[u-],cd);
}
for(i=;i<poi;i++)
printf("%-10s %2d %4d\n",nm[i],ac[i],tm[i]); return ;
}

做法2:C++/结构体/sort

#include<cstdio>
#include<cstring>
#include<algorithm>
using namespace std;
struct node{
char name[];
int sum,ac;
}stu[];
int m;
char dat[];
int getDigit(int l,int r){
int i=l,res=,f=;
if(dat[i]=='-'){
f=-;
i++;
}
for(;i<r;i++)
res=res*+dat[i]-'';
return f*res;
}
int getDScore(int len){
int i;
for(i=;i<len;i++)
if(dat[i]=='(')
break;
return getDigit(,i)+m*getDigit(i+,len-);
}
bool cmp(node a,node b){
if(a.ac!=b.ac)
return a.ac>b.ac;
if(a.sum!=b.sum)
return a.sum<b.sum;
return strcmp(a.name,b.name)==-;
}
int main(){
int n,i,t=,len,d;
scanf("%d%d",&n,&m);
while(scanf("%s",stu[t].name)!=EOF){
for(i=;i<=n;i++){
scanf("%s",dat);
len=strlen(dat);
if(dat[len-]!=')'){
d=getDigit(,len);
if(d>){
stu[t].sum+=d;
stu[t].ac++;
}
}
else{
stu[t].sum+=getDScore(len);
stu[t].ac++;
}
}
t++;
}
sort(stu,stu+t,cmp);
for(i=;i<t;i++)
printf("%-10s %2d %4d\n",stu[i].name,stu[i].ac,stu[i].sum); return ;
}

ZJNU 1164 - 考试排名——中级的更多相关文章

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

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

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

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

  3. 5N - 考试排名

    C++编程考试使用的实时提交系统,具有即时获得成绩排名的特点.它的功能是怎么实现的呢? 我们做好了题目的解答,提交之后,要么“AC”,要么错误,不管怎样错法,总是给你记上一笔,表明你曾经有过一次错误提 ...

  4. B - 考试排名

    C++编程考试使用的实时提交系统,具有即时获得成绩排名的特点.它的功能是怎么实现的呢? 我们做好了题目的解答,提交之后,要么"AC",要么错误,不管怎样错法,总是给你记上一笔,表明 ...

  5. HDU 2093 考试排名 模拟题

    解题报告: 题目描述:写一个程序给一个编程考试C++实时提交系统排名,给你的数据是题目的总数,每次错误提交罚的时间分,每位用户的姓名,然后是输入用户每题的完成情况,有一下几种情况,第一,输入只有一个正 ...

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

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

  7. HD-ACM算法专攻系列(16)——考试排名

    问题描述: 源码: 主要要注意输出格式. #include"iostream" #include"iomanip" #include"algorith ...

  8. ZJNU 1531 - 丢手绢--中级

    可以将相同的人数分块存在数组gp中先 例如RRGGGRBBBBRR 则gp[1~5]={2,3,1,4,2} 首先可以知道,如果要让没有相邻的相同,只需要每个gp[i]/2向下取整即可得出最少需要改变 ...

  9. ZJNU 1160 - 不要62——中级

    取模判断,数组模拟 /* Written By StelaYuri */ #include<stdio.h> ]; int main(){ int n,m,i,s,t; ;i<;i+ ...

随机推荐

  1. [题解] CF932E Team Work

    CF932E Team Work 你现在手里有\(n\)个人,你要选出若干个人来搞事情(不能不选),其中选择\(x\)个人出来的代价是\(x^k\),问所有方案的代价总和. 数据范围:\(1\le n ...

  2. 十一、React 获取服务器数据: axios插件、 fetch-jsonp插件的使用

    react获取服务器APi接口的数据: react中没有提供专门的请求数据的模块.但是我们可以使用任何第三方请求数据模块实现请求数据 一.axios 获取Api数据 使用文档:https://www. ...

  3. 《ES6标准入门》(阮一峰)--2.let 和 const 命令

    1.let命令 基本用法 let只在命令所在的代码块内(花括号内)有效. for循环的计数器,就很合适使用let命令. //var var a = []; for (var i = 0; i < ...

  4. Web基础之Mybatis

    Web基础之Mybatis   对比JdbcTempalte,mybatis才能称得上是框架,JdbcTempalte顶多算是工具类,同时,对比Hibernate,Mybatis又有更多的灵活性,算是 ...

  5. 2016蓝桥杯省赛C/C++A组第八题 四平方和

    题意: 四平方和定理,又称为拉格朗日定理: 每个正整数都可以表示为至多4个正整数的平方和. 如果把0包括进去,就正好可以表示为4个数的平方和. 比如: 5 = 0^2 + 0^2 + 1^2 + 2^ ...

  6. windows driver 延时

    #define Delay_One_MicroSecond (-10) #define Delay_One_MilliSecond (Delay_One_MicroSecond * 1000) voi ...

  7. python类、super函数

    #PYTHON语言及其应用学习笔记 1.创建简单的类 class Person(): #python中特殊的对象初始化方法__init__,一个特殊的函数名 #当你在类声明里定义__init__()方 ...

  8. comparable接口 和 comparator接口的特点与区别

    1. Comparator 和 Comparable 相同的地方 他们都是java的一个接口, 并且是用来对自定义的class比较大小的. 什么是自定义class: 如 public class Pe ...

  9. 数组空值empty

    Array构造函数只带一个数字参数时(否则是作为填充),该参数会被作为数组的预设长度,而非填充一个元素,因此数组内是空单元 如果一个数组中存在一个空单元,即length的值大于实际单元数,这样的数组称 ...

  10. quartz详解4:quartz线程管理

    http://blog.itpub.NET/11627468/viewspace-1766967/ quartz启动后有多个线程同时在跑.启动时会启动主线程.集群线程.检漏线程.工作线程.主线程负责查 ...