题目链接

P1093题目链接



分析

我们需要排序,不如用TreeMap或者TreeSet,但有三个关键词,所以确实不好办。
斟酌再三,决定用TreeSet,而且将三个属性完全封装为一个类而不是一个1对2(元素数量)的映射关系,反而简单一些。
这样,我们利用面向对象的类,简化了问题的复杂度:

    private static class Grade {Integer num;Integer chinese;Integer grade;public Grade(int num, int chinese, int grade) {this.num = num;this.chinese = chinese;this.grade = grade;}}

我们根本不关注数学和英语成绩(在总分计算之后),所以不需要存储。

最后输出的话,因为题意暗示不会出现小于5人的状况,所以不需要担心,加一个counter,到5就break循环就好啦。

TreeMap需要自己制定排序规则,如下:

        Set<Grade> set = new TreeSet<>(new Comparator<Grade>() {@Overridepublic int compare(Grade grade1, Grade grade2) {int result1 = -grade1.grade.compareTo(grade2.grade);if (result1 != 0) {return result1;}int result2 = -grade1.chinese.compareTo(grade2.chinese);if (result2 != 0) {return result2;}return grade1.num.compareTo(grade2.num);}});

正负号一定要弄明白哈,别搞错啦!!

AC代码(Java语言描述)

import java.util.*;public class Main {private static class Grade {Integer num;Integer chinese;Integer grade;public Grade(int num, int chinese, int grade) {this.num = num;this.chinese = chinese;this.grade = grade;}}public static void main(String[] args) {Scanner scanner = new Scanner(System.in);int num = Integer.parseInt(scanner.nextLine());Set<Grade> set = new TreeSet<>(new Comparator<Grade>() {@Overridepublic int compare(Grade grade1, Grade grade2) {int result1 = -grade1.grade.compareTo(grade2.grade);if (result1 != 0) {return result1;}int result2 = -grade1.chinese.compareTo(grade2.chinese);if (result2 != 0) {return result2;}return grade1.num.compareTo(grade2.num);}});for (int i = 1; i <= num; i++) {String[] array = scanner.nextLine().split(" ");int chinese = Integer.parseInt(array[0]);int grade = chinese + Integer.parseInt(array[1]) + Integer.parseInt(array[2]);set.add(new Grade(i, chinese, grade));}int counter = 0;for (Grade grade : set) {counter++;System.out.println(grade.num + " " + grade.grade);if (counter == 5) {break;}}scanner.close();}}

用面向对象解决问题(洛谷P1093题题解,Java语言描述)相关推荐

  1. 队列模拟约瑟夫问题(洛谷P1996题题解,Java语言描述)

    题目要求 P1996题目链接 分析 以前就研究过"约瑟夫环"问题: <单循环链表求解约瑟夫环问题(Java语言描述)> <杀人游戏~约瑟夫环(洛谷P1145题题解 ...

  2. 线性存储的最短平均检索时间(洛谷P1253题题解,Java语言描述)

    题目要求 P1253题目链接 分析 很像 ~洛谷P1223题题解~,也是一种类似SJF的贪心法. 排个序,由于两个不大于10000的数,乘起来还是int,就使用int属性吧. 数据量小,所以Scann ...

  3. 枚举求解单词方阵(洛谷P1101题题解,Java语言描述)

    题目要求 P1101题目链接 分析 可以用DFS做,但我立下了个Flag,所以就用了朴素的枚举来做.... 结果,我的天哪,做了好几个小时-- 其实这种地图题,真的适合 DFS or BFS or D ...

  4. 快速幂||取余运算【模板】(洛谷P1226题题解,Java语言描述)

    题目要求 P1226题目链接 分析 标准的快速幂取模算法板子,之前这个算法我在这篇文章中讲过了:<快速幂算法详解&&快速幂取模算法详解>. 这里选择使用比较简单的API实现 ...

  5. 贪心策略摘果子(洛谷P1478题题解,Java语言描述)

    题目要求 P1478题目链接 分析 本题的低配版题目链接 → 题解 那个题就是纯水题没啥可写的,我除了贴代码无话可说,但这题吧,虽然不算难,但也可一说. 建议大家移步这里 → 精辟题解 这位爷写了本题 ...

  6. 麦森数(洛谷P1045题题解,Java语言描述)

    题目要求 题目链接 分析 这题挺经典的,快速幂取模算法,如果求出大数再取模就可能T掉. 之前有篇文章写了这个算法:<快速幂算法详解&&快速幂取模算法详解> 既然是Java, ...

  7. 求子集元素之和(洛谷P2415题题解,Java语言描述)

    题目要求 P2415题目链接 分析 这题我觉得--当个数学题做就好了嘛. 有一个数N的情况:result = 1 * N 有两个数N1.N2的情况:result = 2 * (N1+N2) 有三个数N ...

  8. N进制正反累加判回文数(洛谷P1015题题解,Java语言描述)

    题目要求 P1015题目链接 分析 开始的时候写了这么一个代码,应该是比较基础的,是十进制的. private static void low() {Scanner scanner = new Sca ...

  9. 试试把OJ题意抽象成物理模型(洛谷P1007题题解,Java语言描述)

    题目要求 P1007题目链接 分析 这题干出的,真有毒... 要是有这种指挥官,也是醉了... 言归正传,这题其实是可以贪心求解的,但我们还可以更加666... 事实上,题干上面那一大篇基本在扯,关键 ...

最新文章

  1. EF-Entity Framework 相关技术点收集贴
  2. SDT(software-defined Things)?软件定义的物件
  3. 求链式线性表的倒数第K项(堆栈解法)
  4. matlab 生成几个聚类点函数nngenc函数
  5. 《区块链开发指南》一一第1章 区块链基础
  6. SDUT 3258 Square Number 简单数学
  7. INI文件读写--VC6.0
  8. 《Head First 设计模式》第十章-状态模式 状态模式
  9. 查看你所使用计算机的网卡信息,查看网卡信息命令
  10. Android项目运行junit测试类时出现错误Internal Error (classFileParser.cpp:3494)的解决办法...
  11. 一些知名科技公司的开源机器学习框架/平台
  12. [BZOJ 3668UOJ #2][Noi2014]起床困难综合症(贪心)
  13. Navicat加载缓慢
  14. ida模拟器调试_IDA pro远程调试折腾记
  15. 关于招标说明书的撰写要点
  16. 学习总结——小程序中输入框和键盘的那些事
  17. IT售前工作职责和流程
  18. Stewart六自由度平台正反解算法
  19. 用Python给弟弟生成1000道算术题
  20. smbus电池信息读取

热门文章

  1. [flask 优化] 由flask-bootstrap,flask-moment引起的访问速度慢的原因及解决办法
  2. Shell第二篇:正则表达式和文本处理工具
  3. ACM竞赛常用STL(二)之STL--algorithm
  4. Terasoluna(中文)
  5. 图像处理基本算法-形态学
  6. PHP实现多文件上传
  7. 云监控 Ganglia 安装步骤 (含python module)
  8. 5阶无向完全图_运动轿跑风 全新上汽名爵5预告图发布
  9. 线性表的定义和基本运算之线性结构
  10. springMvc(实现HandlerMethodArgumentResolver)自定义参数解析器