PAT甲级1012. The Best Rank

题意:

为了评估我们第一年的CS专业学生的表现,我们只考虑他们的三个课程的成绩:C - C编程语言,M - 数学(微积分或线性代数)和E - 英语。同时,我们鼓励学生强调自己的最优秀队伍 - 也就是说,

在三个课程和平均成绩的四个职级中,我们打印每个学生的最佳排名。

例如,C,M,E和A - 4名学生的成绩如下:

StudentID C M E A

310101 98 85 88 90

310102 70 95 88 84

310103 82 87 94 88

310104 91 91 91 91

那么所有学生的最佳排名都是第一,因为第一名在C编程语言方面做得最好,而第二名则是数学第二名,英文第三名,平均第三名。

输入

每个输入文件包含一个测试用例。每个案例以包含2个数字N和M(<= 2000)的行开始,

分别是学生人数和学生人数。然后按N行,每个包含一个6位数字的学生ID,其后是C,M和E顺序的该学生的三个整数等级(在[0,100]范围内)。然后在那里是M行,每行包含学生ID

输出

对于每个M学生,以一行打印他/她的最佳排名,以及由空格分隔的相应排名的符号。

排名方法的优先级排序为A> C> M> E。因此,如果学生获得相同最佳排名有两种或更多种方式,则输出优先级最高的排名。

如果学生不在评分清单上,只需输出“N / A”即可。

思路:

麻烦的地方就是排序了,我写的好丑。题意中排名方法的优先级排序为A> C> M> E 可以通过构造一个count[4]数组的方法来实现。只要当前下标下的数比后面的数都要小于或这等于就可以成立。

ac代码:

C++

// pat1012.cpp : 定义控制台应用程序的入口点。
// #include "stdafx.h" #include<iostream>
#include<cstdio>
#include<string>
#include<algorithm>
#include<queue>
#include<vector>
#include<unordered_map> using namespace std; struct stu {
string id;
int c;
int m;
int e;
int a;
char bestsub;
int best;
}; void getbest(vector<stu>& map)
{
char ans[4] = { 'A','C','M','E' };
int len = map.size();
for (int i = 0; i < len; i++)
{
//c = m = e = a = 1;
int count[4] = { 1,1,1,1 };
for (int j = 0; j < len; j++)
{
if (map[j].a > map[i].a)
{
count[0]++;
}
if (map[j].c > map[i].c)
{
count[1]++;
}
if (map[j].m > map[i].m)
{
count[2]++;
}
if (map[j].e > map[i].e)
{
count[3]++;
}
}
for (int k = 0; k < 4; k++)
{
int u = k + 1;
for (; u < 4; u++)
{
if (count[k] > count[u]) break;
}
if (u >= 4)
{
map[i].bestsub = ans[k];
map[i].best = count[k];
break;
}
}
}
} int main()
{
int N, M,n;
cin >> N >> M;
n = N;
vector<stu> map;
while (N--)
{
stu s;
cin >> s.id >> s.c >> s.m >> s.e;
s.a = (s.c + s.m + s.e) / 3;
map.push_back(s);
}
getbest(map); string tempid;
while (M--)
{
cin >> tempid;
int i = 0;
for (; i < n; i++)
{
if (map[i].id == tempid)
{
cout << map[i].best << " " << map[i].bestsub << endl;
break;
}
}
if (i >= n)
cout << "N/A" << endl;
}
return 0;
}

PAT甲级1012. The Best Rank的更多相关文章

  1. PAT 甲级 1012 The Best Rank

    https://pintia.cn/problem-sets/994805342720868352/problems/994805502658068480 To evaluate the perfor ...

  2. PAT 甲级 1012 The Best Rank (25 分)(结构体排序)

    题意: 为了评估我们第一年的CS专业学生的表现,我们只考虑他们的三个课程的成绩:C - C编程语言,M - 数学(微积分或线性代数)和E - 英语.同时,我们鼓励学生强调自己的最优秀队伍 - 也就是说 ...

  3. PAT甲级——1012 The Best Rank

    PATA1012 The Best Rank To evaluate the performance of our first year CS majored students, we conside ...

  4. PAT——甲级1012:The Best Rank(有坑)

    1012 The Best Rank (25 point(s)) To evaluate the performance of our first year CS majored students, ...

  5. PAT甲 1012. The Best Rank (25) 2016-09-09 23:09 28人阅读 评论(0) 收藏

    1012. The Best Rank (25) 时间限制 400 ms 内存限制 65536 kB 代码长度限制 16000 B 判题程序 Standard 作者 CHEN, Yue To eval ...

  6. pat甲级1012

    1012 The Best Rank (25)(25 分) To evaluate the performance of our first year CS majored students, we ...

  7. 【PAT】1012. The Best Rank (25)

    题目链接: http://pat.zju.edu.cn/contests/pat-a-practise/1012 题目描述: To evaluate the performance of our fi ...

  8. PAT甲级——A1012 The Best Rank

    To evaluate the performance of our first year CS majored students, we consider their grades of three ...

  9. PAT甲级1012题解——选择一种合适数据存储方式能使题目变得更简单

    题目分析: 本题的算法并不复杂,主要是要搞清楚数据的存储方式(选择一种合适的方式存储每个学生的四个成绩很重要)这里由于N的范围为10^6,故选择结构体来存放对应下标为学生的id(N只有2000的范围, ...

随机推荐

  1. 64_p3

    perl-Locale-Msgfmt-0.15-17.fc26.noarch.rpm 12-Feb-2017 03:11 20558 perl-Locale-PO-0.27-6.fc26.noarch ...

  2. python使用unittest模块selenium访问斗鱼获取直播信息

    import unittest from selenium import webdriver from bs4 import BeautifulSoup as bs class douyu(unitt ...

  3. uWSGI+Nginx+Flask在Linux下的部署

    搞了一天多,终于搞通了uWSGI的部署原理,下面总结一下遇到的一些坑,希望给读者能够少走弯路.        简单来说,uWSGI是一个web服务器,Nginx进行反向代理的其实跟这些服务器可以说没有 ...

  4. IDEA配置toString方法

    1.toString JSON带父类toString public java.lang.String toString() { final java.lang.StringBuilder sb = n ...

  5. SNMP AGENT函数介绍

    http://wenku.baidu.com/view/6a7903a9d1f34693daef3e9f.html 一.  SNMP AGENT在SNMP框架中的位置 1.1 SNMP是被广泛接受并投 ...

  6. golang之结构体和方法

    结构体的定义 结构体是将零个或者多个任意类型的命令变量组合在一起的聚合数据类型.每个变量都叫做结构体的成员. 其实简单理解,Go语言的结构体struct和其他语言的类class有相等的地位,但是GO语 ...

  7. 自组织神经网络介绍:自组织特征映射SOM(Self-organizing feature Map),第三部分

    前面两篇介绍了SOM的基本概念和算法,第一部分,第二部分,本篇具体展开一下应用中的一些trick设定. SOM设计细节 输出层设计 输出层神经元数量设定和训练集样本的类别数相关,但是实际中我们往往不能 ...

  8. UAF漏洞学习

    产生原因: UAF漏洞的成因是一块堆内存被释放了之后又被使用.又被使用指的是:指针存在(悬垂指针被引用).这个引用的结果是不可预测的,因为不知道会发生什么.由于大多数的堆内存其实都是C++对象,所以利 ...

  9. 791. Custom Sort String

    S and T are strings composed of lowercase letters. In S, no letter occurs more than once. S was sort ...

  10. Base Class 慎用箭头函数

    在项目中,child继承base的时候,需要重新修改base.fun的逻辑,但是有些情况下面并不是简单的覆盖,而是在base.fun的逻辑基础上进行加工处理. 刚开始接触es6的时候也许都遇到过,ch ...