PAT 甲级【1012 The Best Rank】
- 本题用java极容易超时,提交了好几次才成功
- 另外90 88 77 77 50,名次应该是1 2 3 3 5 ,不是1 2 3 3 4
- import java.io.*;
- public class Main {
- @SuppressWarnings("unchecked")
- public static void main(String[] args) throws IOException {
- StreamTokenizer st = new StreamTokenizer(new InputStreamReader(System.in));
- int n, m;
- st.nextToken();
- n = (int) st.nval;
- st.nextToken();
- m = (int) st.nval;
- int[] id = new int[n];
- int[][] score = new int[n][4];
- int[][] pl = new int[4][101];
- for (int i = 0; i < n; i++) {
- st.nextToken();
- id[i] = (int) st.nval;
- int avg = 0;
- for (int j = 0; j < 3; j++) {
- st.nextToken();
- score[i][j] = (int) st.nval;
- avg += score[i][j];
- pl[j][score[i][j]]++;
- }
- score[i][3] = (int) (Math.round((double) avg / 3));
- pl[3][score[i][3]]++;
- }
- int[][] rank = new int[n][4];
- for (int i = 0; i < 4; i++) {
- int[] sum = new int[101];
- sum[100] = 0;
- for (int j = 99; j >= 0; j--) {
- sum[j] = sum[j + 1] + pl[i][j + 1];
- }
- for (int j = n - 1; j >= 0; j--) {
- rank[j][i] = sum[score[j][i]] + 1;
- }
- }
- StringBuilder[] rankmap = new StringBuilder[1_000_000];
- for (int i = 0; i < n; i++) {
- int min = n + 1;
- for (int j = 0; j < 4; j++) {
- if (min > rank[i][j]) {
- min = rank[i][j];
- }
- }
- StringBuilder sb = new StringBuilder();
- sb.append(min).append(" ");
- if (rank[i][3] == min) {
- sb.append("A");
- rankmap[id[i]] = sb;
- } else if (rank[i][0] == min) {
- sb.append("C");
- rankmap[id[i]] = sb;
- } else if (rank[i][1] == min) {
- sb.append("M");
- rankmap[id[i]] = sb;
- } else if (rank[i][2] == min) {
- sb.append("E");
- rankmap[id[i]] = sb;
- }
- }
- PrintWriter pw = new PrintWriter(new OutputStreamWriter(System.out));
- StringBuilder sb = new StringBuilder();
- for (int i = 0; i < m; i++) {
- st.nextToken();
- int searchedid = (int) st.nval;
- if (rankmap[searchedid] == null) {
- sb.append("N/A");
- } else {
- sb.append(rankmap[searchedid]);
- }
- sb.append("\n");
- }
- pw.print(sb);
- pw.flush();
- }
- }
简单优化下:
- import java.io.*;
- public class Main {
- static char[] arr = new char[]{'C', 'M', 'E', 'A'};
- @SuppressWarnings("unchecked")
- public static void main(String[] args) throws IOException {
- StreamTokenizer st = new StreamTokenizer(new InputStreamReader(System.in));
- int n, m;
- st.nextToken();
- n = (int) st.nval;
- st.nextToken();
- m = (int) st.nval;
- int[] id = new int[n];
- int[][] score = new int[n][4];
- int[][] pl = new int[4][101];
- for (int i = 0; i < n; i++) {
- st.nextToken();
- id[i] = (int) st.nval;
- int avg = 0;
- for (int j = 0; j < 3; j++) {
- st.nextToken();
- score[i][j] = (int) st.nval;
- avg += score[i][j];
- pl[j][score[i][j]]++;
- }
- score[i][3] = (int) (Math.round((double) avg / 3));
- pl[3][score[i][3]]++;
- }
- int[][] rank = new int[n][4];
- for (int i = 0; i < 4; i++) {
- int[] sum = new int[101];
- sum[100] = 0;
- for (int j = 99; j >= 0; j--) {
- sum[j] = sum[j + 1] + pl[i][j + 1];
- }
- for (int j = n - 1; j >= 0; j--) {
- rank[j][i] = sum[score[j][i]] + 1;
- }
- }
- StringBuilder[] rankmap = new StringBuilder[1_000_000];
- for (int i = 0; i < n; i++) {
- int min = n + 1;
- int index = 0;
- for (int j = 0; j < 4; j++) {
- if (min > rank[i][j] || (j == 3 && min == rank[i][j])) {
- min = rank[i][j];
- index = j;
- }
- }
- StringBuilder sb = new StringBuilder();
- sb.append(min).append(" ").append(arr[index]);
- rankmap[id[i]] = sb;
- }
- PrintWriter pw = new PrintWriter(new OutputStreamWriter(System.out));
- StringBuilder sb = new StringBuilder();
- for (int i = 0; i < m; i++) {
- st.nextToken();
- int searchedid = (int) st.nval;
- if (rankmap[searchedid] == null) {
- sb.append("N/A");
- } else {
- sb.append(rankmap[searchedid]);
- }
- sb.append("\n");
- }
- pw.print(sb);
- pw.flush();
- }
- }
PAT 甲级【1012 The Best Rank】的更多相关文章
- PAT甲级1012. The Best Rank
PAT甲级1012. The Best Rank 题意: 为了评估我们第一年的CS专业学生的表现,我们只考虑他们的三个课程的成绩:C - C编程语言,M - 数学(微积分或线性代数)和E - 英语.同 ...
- PAT 甲级 1012 The Best Rank
https://pintia.cn/problem-sets/994805342720868352/problems/994805502658068480 To evaluate the perfor ...
- PAT 甲级 1012 The Best Rank (25 分)(结构体排序)
题意: 为了评估我们第一年的CS专业学生的表现,我们只考虑他们的三个课程的成绩:C - C编程语言,M - 数学(微积分或线性代数)和E - 英语.同时,我们鼓励学生强调自己的最优秀队伍 - 也就是说 ...
- PAT甲级——1012 The Best Rank
PATA1012 The Best Rank To evaluate the performance of our first year CS majored students, we conside ...
- PAT——甲级1012:The Best Rank(有坑)
1012 The Best Rank (25 point(s)) To evaluate the performance of our first year CS majored students, ...
- 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 ...
- pat甲级1012
1012 The Best Rank (25)(25 分) To evaluate the performance of our first year CS majored students, we ...
- 【PAT】1012. The Best Rank (25)
题目链接: http://pat.zju.edu.cn/contests/pat-a-practise/1012 题目描述: To evaluate the performance of our fi ...
- PAT甲级——A1012 The Best Rank
To evaluate the performance of our first year CS majored students, we consider their grades of three ...
- PAT甲级1012题解——选择一种合适数据存储方式能使题目变得更简单
题目分析: 本题的算法并不复杂,主要是要搞清楚数据的存储方式(选择一种合适的方式存储每个学生的四个成绩很重要)这里由于N的范围为10^6,故选择结构体来存放对应下标为学生的id(N只有2000的范围, ...
随机推荐
- 9.文件和异常--《Python编程:从入门到实践》
9.1 从文件中读取数据 要使用文本文件中的信息,首先需要将信息读取到内存中.为此,你可以一次性读取文件的全部内容,也可以以每次一行的方式逐步读取. 9.1.1 读取整个文件 with open( ...
- .NET Core开发实战(第2课:内容综述)--学习笔记
02 | 内容综述 课程目标 掌握 .NET Core 微服务架构的最佳实践 成长为一个具备良好架构设计能力的架构师 课程内容 第一部分 .NET Core 的必备知识 第二部分 .NET Core ...
- 顺着这份Java面试地图,国内一二线互联网公司随便进...
原创:陶朱公Boy(微信公众号ID:taozhugongboy),欢迎分享,转载请保留出处. 前言 临近春节,这几天手头没什么事情,花了点时间,将自己近两年收集的面试真题,进行了一番深度归纳总结,整理 ...
- 鹏程杯子2023 pwn
主要就是修改stdin的最后几位,使他变为write,然后泄露libc,为所欲为即可. 本人是卡在不知道stdin那里可以修改. 然后使用一下jmp qword rbp这个gadget 0x400a9 ...
- JS 这一次彻底理解插入排序
壹 ❀ 引 在前两篇排序文章中,我们分别介绍了冒泡排序与选择排序,趁热打铁,我们接着聊插入排序.老实说,在分析排序过程中头脑很清楚,过后再尝试写出排序代码还有点坎坷...可能是我脑瓜子不太机灵的问题, ...
- CF1850H The Third Letter
题目链接 题解 知识点:贪心,图论建模. 考虑对约束 a b d 建边 \(a \mathop{\to}\limits^d b\) 与 \(b \mathop{\to}\limits^{-d} a\) ...
- 【Unity3D】基于深度和法线纹理的边缘检测方法
1 前言 边缘检测特效中使用屏后处理技术,通过卷积运算计算梯度,检测每个像素周围像素的亮度差异,以识别是否是边缘像素:选中物体描边特效中也使用了屏后处理技术,通过 CommandBuffer 获取 ...
- eclipse项目右击找不到build path
右击项目–>properties–>Project Facets–>勾选右侧的Java,然后保存. 此时再操作就有了.
- Vue+SpringBoot+ElementUI实战学生管理系统-5.用户管理模块
1.章节介绍 前一篇介绍了项目的API接口设计,这一篇编写用户管理模块,需要的朋友可以拿去自己定制.:) 2.获取源码 源码是捐赠方式获取,详细请QQ联系我 :)! 3.项目截图 列表操作 动态图 4 ...
- spring boot+bootstrap实现动态轮播图实战
1.bootstrap轮播图 最近开发了个网站需要用到轮播图,正好前端用的是Bootstrap,这里就实战一下. 水平一般能力有限,仅供参考. 前提条件: bootstrap4.5 jquery 3张 ...