HDU 1084 What Is Your Grade?(排序)
题目在这里:1084
题目描述:
“Point, point, life of student!”
This is a ballad(歌谣)well known in colleges, and you must care about your score in this exam too. How many points can you get? Now, I told you the rules which are used in this course.
There are 5 problems in this final exam. And I will give you 100 points if you can solve all 5 problems; of course, it is fairly difficulty for many of you. If you can solve 4 problems, you can also get a high score 95 or 90 (you can get the former(前者) only when your rank is in the first half of all students who solve 4 problems). Analogically(以此类推), you can get 85、80、75、70、65、60. But you will not pass this exam if you solve nothing problem, and I will mark your score with 50.
Note, only 1 student will get the score 95 when 3 students have solved 4 problems.
I wish you all can pass the exam!
Come on!题意分析:
有五道题,满分是100分,做出5道就是100,4道90,3道80,2道70,1道60,一道都没做出来就是50分。如果你处于和你做出同样多的题目数的人的前一半,那么就可以多拿5分,做出5道题和0道题的同学不在此列。我的思路:
记录时间,按照时间降序排列,但是要按照原来的顺序输出分数,所以需要一个数组来记录原来的顺序,不能在原来的数据上直接进行排序,一开始我没有考虑到这个,吃了WA。还有一个问题,考虑到如果是只有一个人,或者好几个人花同样的时间做出了同样的时间,后者可以按照原来的规则来,一个人就再写一个判断就行。
虽然看discuss,好像没有这样的数据。w(゚Д゚)w
最后采用一个二维数组来存储做同样多道题的人数和记录原本的顺序,a[5][105],
比如a[1][0],就是只做出一道题的人数,假如有5个人,那么a[1][1]–a[1][5]就可以保存他们原来的顺序。完整代码
#include<iostream>
#include<string.h>
using namespace std;
typedef struct student
{
char time[15]; //消耗时间
int score; //分数
}student;
student stu[105];
int main()
{
int i, j, k, n, temp, tt;
int a[5][105]; //用于记录做题人数和做题顺序
while (cin >> n) //学生数目n
{
if (n <= 0) break;
memset(a, 0, sizeof(int) * 5 * 105); //归零
for (i = 1; i <= n; i++)
{
cin >> temp >> stu[i].time; //题目数以及消耗时间
stu[i].score = 50 + temp * 10;
if (temp>0 && temp<5)
{
a[temp][0]++; //做出同样题目数目的人
tt = a[temp][0]; //为了标记顺序
a[temp][tt] = i; //记录做出这道题的人的顺序
}
}
for (i = 1; i<5; i++) //做出题目数目从1到4
{
for (j = 2; j <= a[i][0]; j++)
{
for (k = 2; k <= a[i][0] + 2 - j; k++)
{
if (strcmp(stu[a[i][k - 1]].time, stu[a[i][k]].time) > 0) //按照时间大小降序排列
{
swap(a[i][k - 1], a[i][k]);
}
}
}
for (j = 1; j <= a[i][0] / 2; j++)
stu[a[i][j]].score += 5;
}
for (i = 1; i <= n; i++)
cout << stu[i].score << endl;
cout << endl;
}
return 0;
}
HDU 1084 What Is Your Grade?(排序)的更多相关文章
- hdu 1084 What Is Your Grade?
http://acm.hdu.edu.cn/showproblem.php?pid=1084 What Is Your Grade? Time Limit: 2000/1000 MS (Java/Ot ...
- HDU.3342 Legal or Not (拓扑排序 TopSort)
HDU.3342 Legal or Not (拓扑排序 TopSort) 题意分析 裸的拓扑排序 根据是否成环来判断是否合法 详解请移步 算法学习 拓扑排序(TopSort) 代码总览 #includ ...
- HDU.1285 确定比赛名次 (拓扑排序 TopSort)
HDU.1285 确定比赛名次 (拓扑排序 TopSort) 题意分析 裸的拓扑排序 详解请移步 算法学习 拓扑排序(TopSort) 只不过这道的额外要求是,输出字典序最小的那组解.那么解决方案就是 ...
- HDU 1084:What Is Your Grade?
Problem Description "Point, point, life of student!" This is a ballad(歌谣)well known in col ...
- HDU 4857 逃生 (反向拓扑排序 & 容器实现)
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=4857 逃生 Time Limit: 2000/1000 MS (Java/Others) Mem ...
- ACM: HDU 1285 确定比赛名次 - 拓扑排序
HDU 1285 确定比赛名次 Time Limit:1000MS Memory Limit:32768KB 64bit IO Format:%I64d & %I64u De ...
- ACM: hdu 1811 Rank of Tetris - 拓扑排序-并查集-离线
hdu 1811 Rank of Tetris Time Limit:1000MS Memory Limit:32768KB 64bit IO Format:%I64d & % ...
- hdu 1285 确定比赛名次 拓扑排序
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1285 有N个比赛队(1<=N<=500),编号依次为1,2,3,....,N进行比赛,比赛 ...
- 杭电OJ—— 1084 What Is Your Grade?
What Is Your Grade? Problem Description “Point, point, life of student!” This is a ballad(歌谣)well kn ...
随机推荐
- PHP会话管理
Session使用 在每个页面中使用session之前,必须使用session_start() 在每个session中都可以使用$_SESSION这个全局数组,在页面必须调用session_start ...
- Fedora14 mount出现错误时解决办法【亲测有效】
挂载时出现了如上图所示问题,看第一条英语提示,我刚开始以为是文件权限不够,改了权限之后,依旧存在这样的问题, 于是,我上网查阅了一些资料: 在解决之前,先让我们一起来了解一下nfs: NFS最大功能就 ...
- C# 压缩 解压 复制文件夹,文件的操作
命名空间:namespace System.IO.Compression 压缩: //目标文件夹 string fileDirPath = "/Downloads/试题" + us ...
- ASP.NET前端调用后台方法
<script> function MyConfirm() { if (confirm('存在重复记录,覆盖点继续,不覆盖追加保存点取消')) { ...
- [转]Linq语法二
本文将讲述LINQ的基础查询(此文所有例子都使用LINQ to Object) 在此之前,我们先创建一个用于示例的数据源: Student类:表示学生,包括学号.姓名及班级 Courses类:表示学生 ...
- kafka brokers配置参数详解
基本配置如下: -broker.id-log.dirs-zookeeper.connect Topic-level配置以及其默认值将在下面讨论. Property Default Descriptio ...
- sqlserver门户设置
------ insert by wandz 20180918 门户模板表 start ------set identity_insert oa_portal_template on;begin de ...
- Python高级数据类型
除了python中默认提供的几种基本数据类型 collections模块还提供了几种特别好用的类型! 1.Conters //计数器 2.Orderdict // 有序字典 3.defalutdict ...
- JavaScript写入文件到本地
工作中有时需要通过 JavaScript 保存文件到本地,我们都知道 JavaScript 基于安全的考虑,是不允许直接操作本地文件的.IE 可以通过 VB 插件的方式进行,而 Chrome 和 fi ...
- vue2 关于ref
1,VUE2子组件索引 <div id="app"> <navbar></navbar> <pagefooter></page ...