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. Centos7.4 kafka集群安装与kafka-eagle1.3.9的安装

    Centos7.4 kafka集群安装与kafka-eagle1.3.9的安装 集群规划: hostname Zookeeper Kafka kafka-eagle kafka01 √ √ √ kaf ...

  2. dp学习笔记(各种dp,比较杂)

    HDU1176 中文题意不多解释了. 建一个二维dp数组,dp[ i ][ j ]表示第 i 秒落在 j 处一个馅饼.我们需要倒着DP,为什么呢,从 0秒,x=5处出发,假如沿数组正着往下走,终点到哪 ...

  3. python outline

    1.列表/数组/numpy/Pandas Python list 初始化技巧   (2018-12-27 11:54) python3 sort list   (2019-05-23 14:52) P ...

  4. HDU 4662 MU Puzzle(找规律)

    题意:问是否能把MI通过以下规则转换成给定的字符串s. 1.使M之后的任何字符串加倍(即,将Mx更改为Mxx). 例如:MIU到MIUIU.2.用U替换任何III.例如:MUIIIU至MUUU.3.去 ...

  5. 2 ~ express ~ 模板引擎的配置与使用

    一,创建应用 (一),创建应用,监听端口 var express = require('express') // 创建app应用 var app = express() app.listen(3000 ...

  6. 04-String——课后作业1:字串加密

    题目:请编写一个程序,加密或解密用户输入的英文字串要求设计思想.程序流程图.源代码.结果截图. 程序设计思想:首先由用户选择是加密还是解密,利用String类中的charAt函数依次取出字串中的字符, ...

  7. 对于AVL树和红黑树的理解

    AVL又称(严格)高度平衡的二叉搜索树,也叫二叉查找树.平衡二叉树.window对进程地址空间的管理用到了AVL树. 红黑树是非严格平衡二叉树,统计性能要好于平衡二叉树.广泛的在C++的STL中,ma ...

  8. C#高级编程(第9版) 第10章 集合 笔记

    话说 虽然敲过好多代码, 但除了C++,一直没正眼瞧过其它语言.(没办法 谁叫C++既有oop又能自由控制内存呢) 今天 看公司老项目的src,c#的,linq+Dictionary的用法有感.所以找 ...

  9. Mysql时间范围分区(RANGE COLUMNS方式)

    1.创建测试表 CREATE TABLE `t_test` ( `id` ), `dates` DATETIME ); ALTER TABLE t_test ADD PRIMARY KEY (id); ...

  10. FTP服务器 vsftp samba服务器 共享 smb

    FTP服务器 vsftp samba服务器 共享 smb 马哥视频 参考1 参考3 参考2 参考4 vsftp服务器实现匿名用户上传.修改权限和一些设置 win7访问 地址栏输入   ftp://账号 ...