为了用事实说明挖掘机技术到底哪家强,PAT组织了一场挖掘机技能大赛。现请你根据比赛结果统计出技术最强的那个学校。
输入格式:
输入在第1行给出不超过105的正整数N,即参赛人数。随后N行,每行给出一位参赛者的信息和成绩,包括其所代表的学校的编号(从1开始连续编号)、及其比赛成绩(百分制),中间以空格分隔。
输出格式:
在一行中给出总得分最高的学校的编号、及其总分,中间以空格分隔。题目保证答案唯一,没有并列。
输入样例:
6 3 65 2 80 1 100 2 70 3 40 3 0
输出样例:
2 150
1 package com.hone.basical; 2 3 import java.util.ArrayList; 4 import java.util.Collections; 5 import java.util.Comparator; 6 import java.util.List; 7 import java.util.Scanner; 8 9 /** 10 * 原题目:https://www.patest.cn/contests/pat-b-practise/1030 11 * @author Xia 12 * 和前面一样,通过建立一个school类,定义id score(准确的数是一个学生类) 13 * 先将相同的id的score进行合并,然后排列,取最大的一个对象。 14 * List的应用 15 * method 1 16 */ 17 public class basicalLevel1032BestSchool{ 18 public static void main(String[] args) { 19 Scanner s = new Scanner(System.in); 20 int n = s.nextInt(); 21 List<school> slist = new ArrayList<>(); 22 for (int i = 0; i < n; i++) { 23 school sl = new school(); 24 sl.id = s.nextInt(); 25 sl.score = s.nextInt(); 26 slist.add(sl); 27 } 28 for (int i = 0; i < slist.size(); i++) { 29 for (int j = slist.size()-1; j > i; j--) { 30 if (slist.get(i).id == slist.get(j).id) { 31 slist.get(i).setScore(slist.get(i).score+slist.get(j).score); 32 slist.remove(j); 33 } 34 } 35 } 36 Collections.sort(slist, new compareByscore()); 37 38 System.out.println(slist.get(slist.size()-1).id+" "+ 39 slist.get(slist.size()-1).score); 40 } 41 42 } 43 44 class compareByscore implements Comparator{ 45 46 @Override 47 public int compare(Object o1, Object o2) { 48 school s1 = (school) o1; 49 school s2 = (school) o2; 50 return s1.score-s2.score; 51 } 52 } 53 54 55 class school{ 56 int id; 57 int score; 58 public int getId() { 59 return id; 60 } 61 public void setId(int id) { 62 this.id = id; 63 } 64 public int getScore() { 65 return score; 66 } 67 public void setScore(int score) { 68 this.score = score; 69 } 70 71 }
1 package com.hone.basical; 2 3 import java.util.Scanner; 4 5 /** 6 * 原题目:https://www.patest.cn/contests/pat-b-practise/1032 7 * @author Xia 8 * 方法2 9 * 思路:用一个school[]数组来存储每一个学校的最终得分,但是这样容易造成超时。因为数组必须建得足够的大。 10 */ 11 public class basicalLevel1032BestSchoolImprove{ 12 public static void main(String[] args) { 13 Scanner s = new Scanner(System.in); 14 int n = s.nextInt(); //学生总人数 15 int[] school = new int[100001]; 16 for (int i = 0; i < n; i++) { 17 int id = s.nextInt(); 18 int score = s.nextInt(); 19 school[id]+=score; 20 } 21 int max = -1; 22 int index = 0; 23 for (int i = 0; i < school.length; i++) { 24 if (school[i] > max) { 25 max = school[i]; 26 index = i; 27 } 28 } 29 System.out.println(index+" "+school[index]); 30 } 31 }