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+ ...
随机推荐
- 错误:selenium.common.exceptions.SessionNotCreatedException: Message: Unable to find a matching set of capabilities
错误再现 原因:firefox浏览器版本和浏览器驱动版本不匹配 解决办法:卸载高版本浏览器,安装低版本浏览器
- [ WARN ] Keyword 'Capture Page Screenshot' could not be run on failure: URLError: <urlopen error [Errno 10061] Connection refused>
[ WARN ] Keyword 'Capture Page Screenshot' could not be run on failure: URLError: <urlopen error ...
- Day1-T3
原题目 Describe:两个限制条件,求第三属性的最大和 code: #pragma GCC optimize(2) #include<bits/stdc++.h> using name ...
- JS事件-对象监视事件,事件触发函数
写在前面: 一句话作为本文的核心思想:对象监视事件,事件触发函数: (一)事件 1.事件分类 (1)鼠标事件 click() 鼠标单击 dblclick() ...
- FFmpeg的基本使用
1.FFmpeg理解 (1)FFmpeg是一个视屏.音频编码工具 (2)x项目名称mpeg来源mpeg编码标准,但不局限只能使用mpeg编码标准.FF 表示fast forward (3)被广泛使用. ...
- MySQL 表查询语句练习题
MySQL 表查询语句练习题: 一. 设有一数据库,包括四个表:学生表(Student).课程表(Course).成绩表(Score)以及教师信息表(Teacher).四个表的结构分别如表1-1的表 ...
- 使用Python绘制新型冠状肺炎全国增长趋势图
截至1月28日24时,国家卫生健康委收到31个省(区.市)累计报告确诊病例5974例,现有重症病例1239例,累计死亡病例132例,累计治愈出院103例.现有疑似病例9239例.目前累计追踪到密切接触 ...
- 使用super调用被子类覆盖的父类方法
1.没有super方法 /* * 子类方法覆盖父类方法,用super方法可以调用父类被覆盖的方法 */ class fruit{ public fruit() { System.out.println ...
- 汪慧和201771010123《面向对象程序设计(Java)》第三周学习总结
1.实验目的与要求 (1)进一步掌握Eclipse集成开发环境下java程序开发基本步骤: (2)熟悉PTA平台线上测试环境: (3)掌握Java语言构造基本程序语法知识(ch1-ch3): (4)利 ...
- ZooKeeper解决的问题
1.解决分布式单点问题 https://www.jianshu.com/p/08b76bd7a634 2.实现分布式环境数据的一致性.访问ZooKeeper树结构时,不同节点返回的数据是一致,不会引起 ...