ZJNU 1164 - 考试排名——中级
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 - 考试排名——中级的更多相关文章
- HDU——2093考试排名(string类及其函数的运用以及istringstream)
考试排名 Time Limit: 1000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others) Total Submi ...
- HDOJ(HDU) 2093 考试排名(Arrays.sort排序、类的应用)
Problem Description C++编程考试使用的实时提交系统,具有即时获得成绩排名的特点.它的功能是怎么实现的呢? 我们做好了题目的解答,提交之后,要么"AC",要么错 ...
- 5N - 考试排名
C++编程考试使用的实时提交系统,具有即时获得成绩排名的特点.它的功能是怎么实现的呢? 我们做好了题目的解答,提交之后,要么“AC”,要么错误,不管怎样错法,总是给你记上一笔,表明你曾经有过一次错误提 ...
- B - 考试排名
C++编程考试使用的实时提交系统,具有即时获得成绩排名的特点.它的功能是怎么实现的呢? 我们做好了题目的解答,提交之后,要么"AC",要么错误,不管怎样错法,总是给你记上一笔,表明 ...
- HDU 2093 考试排名 模拟题
解题报告: 题目描述:写一个程序给一个编程考试C++实时提交系统排名,给你的数据是题目的总数,每次错误提交罚的时间分,每位用户的姓名,然后是输入用户每题的完成情况,有一下几种情况,第一,输入只有一个正 ...
- 题解报告:hdu 2093 考试排名
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=2093 Problem Description C++编程考试使用的实时提交系统,具有即时获得成绩排名的 ...
- HD-ACM算法专攻系列(16)——考试排名
问题描述: 源码: 主要要注意输出格式. #include"iostream" #include"iomanip" #include"algorith ...
- ZJNU 1531 - 丢手绢--中级
可以将相同的人数分块存在数组gp中先 例如RRGGGRBBBBRR 则gp[1~5]={2,3,1,4,2} 首先可以知道,如果要让没有相邻的相同,只需要每个gp[i]/2向下取整即可得出最少需要改变 ...
- ZJNU 1160 - 不要62——中级
取模判断,数组模拟 /* Written By StelaYuri */ #include<stdio.h> ]; int main(){ int n,m,i,s,t; ;i<;i+ ...
随机推荐
- VMware虚拟机黑屏
引用自:VMware吧 近期很多朋友遇到了VMware Workstation 14开启或新建虚拟机后黑屏的现象,无法关机,软件也无法关闭 用任务管理器结束VMware后这个VMX进程也关不了 解决办 ...
- CMD手动打jar包
代码: jar -cvfM "jarpage.jar" @fileslist.txt 解析: 将文档(fileslist.txt)中所有路径对应文件打成jar包,取名为:jarpa ...
- Profiling Top Kagglers: Bestfitting, Currently #1 in the World
We have a new #1 on our leaderboard – a competitor who surprisingly joined the platform just two yea ...
- 【golang】golang的一些知识要点
特殊常量iota: 1.iota的值在遇到const关键字时将被重置为0 2.const中每新增一行常量声明将使iota计数一次,也就是自动加一. 3.iota只能在常量定义中使用. iota常见使用 ...
- BZOJ:2244: [SDOI2011]拦截导弹
问题: printf("%.5f ",0):为什么错了? 注意: 初始值很重要 题解: 三维偏序问题: 记录从前往后最长上升子序列长度pref,条数preg 从后往前suff,su ...
- 使用DOM4J生成XML文档
package xml; import java.io.FileOutputStream; import java.util.ArrayList; import java.util.List; imp ...
- Nginx负载均衡(转发)
http://www.cnblogs.com/jalja/p/6117881.html 一.反向代理 正向代理: 客户端要获取的资源就在服务器上,客户端请求的资源路径就是最终响应资源的服务器路径,这就 ...
- __getattr__在python2.x与python3.x中的区别及其对属性截取与代理类的影响
python2.x中的新类型类(New-style class)与python3.x的类一致,均继承object类,而不继承object的类称为经典类(classic class),而对于这两种类,一 ...
- Sqlserver 增删改查----删
--我们就以院系,班级,学生来举例. create TABLE [dbo].YuanXi ( Id ,) NOT NULL,--学校id 自增量 YuanXiName varchar() null, ...
- impdp导入.dmp到oracle
1.创建表空间 create tablespace CCGRP_PRO --表空间名 datafile 'D:\oracleData\test.dbf' --物理文件 表空间数据文件存放路径size ...