复试分数线该怎么划定呢(洛谷P1068题题解,Java语言描述)
生活随笔
收集整理的這篇文章主要介紹了
复试分数线该怎么划定呢(洛谷P1068题题解,Java语言描述)
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
題目要求
P1068題目鏈接
分析
本題類似于此題,可以包裝成一個類,然后利用自己定義的排序規則基于TreeSet去排序然后輸出。
在實現的時候注意兩個細節:
這些并不難,只是稍稍麻煩一點點就可以啦!
AC代碼(Java語言描述)
import java.util.*;public class Main {private static class Person {Integer id;Integer grade;public Person(int id, int grade) {this.id = id;this.grade = grade;}}public static void main(String[] args) {Set<Person> set = new TreeSet<>(new Comparator<Person>() {@Overridepublic int compare(Person person1, Person person2) {int grade_compare = -person1.grade.compareTo(person2.grade);if (grade_compare != 0) {return grade_compare;}return person1.id.compareTo(person2.id);}});Scanner scanner = new Scanner(System.in);int all_num = scanner.nextInt(), aim_num = scanner.nextInt();scanner.nextLine();aim_num = (int)Math.floor(aim_num*1.5);for (int i = 0; i < all_num; i++) {String[] array = scanner.nextLine().split(" ");set.add(new Person(Integer.parseInt(array[0]), Integer.parseInt(array[1])));}List<String> list = new ArrayList<>(aim_num);int counter = 0, low = 0;for (Person person : set) {if (counter >= aim_num && low != person.grade) {break;}counter++;list.add(person.id + " " + person.grade);if (counter == aim_num) {low = person.grade;}}System.out.println(low + " " + counter);for (String s : list) {System.out.println(s);}scanner.close();}}總結
以上是生活随笔為你收集整理的复试分数线该怎么划定呢(洛谷P1068题题解,Java语言描述)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 根据特殊EOF的序列判断比赛输赢(洛谷P
- 下一篇: 从 linux内核来看进程与线程的异同