7-5 实验室使用排期 (25分)(List排序)

受新冠疫情影响,当前大家的活动都必须注意保持充分的社交距离,国家实验室的使用也同样受到了严格的限制。假设规定任何一个时间点上,实验室内最多只能有 1 个人,且每个人都必须提前申请实验室的使用,只有申请被批准后才能进入。现给定一批第二天的实验室使用申请,你需要写个程序自动审批,使得能够被批准的申请数量最大化。

输入格式:

输入第一行首先给出一个正整数 N(≤2×103),为申请总量。随后 N 行,每行按以下格式给出申请信息:

hh:mm:ss hh:mm:ss

其中 hh:mm:ss 表示一天内的时间点“小时:分钟:秒钟”,最早从 00:00:00 开始,最晚到 23:59:59 结束。第一个时间点为进入实验室的时间,第二个是离开时间。题目保证离开时间在进入时间之后。

注意所有时间都在一天之内。时间按 24 小时显示。

输出格式:

在一行中输出能够被批准的最大申请数量。

输入样例:

7
18:00:01 23:07:01
04:09:59 11:30:08
11:35:50 13:00:00
23:45:00 23:55:50
13:00:00 17:11:22
06:30:50 11:42:01
17:30:00 23:50:00

输出样例:

5

样例解释:

除了最后两个申请,其它都可以被批准。

Java 代码:

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;class Schedule implements Comparable<Schedule> {public int start;public int end;public Schedule(int start, int end) {super();this.start = start;this.end = end;}// 按结束时间升序@Overridepublic int compareTo(Schedule o) {return this.end - o.end;}
}public class Main {public static void main(String[] args) throws NumberFormatException, IOException {// TODO Auto-generated method stubBufferedReader in = new BufferedReader(new InputStreamReader(System.in));int N = Integer.parseInt(in.readLine());List<Schedule> list = new ArrayList<Schedule>();for (int i = 0; i < N; i++) {String[] array = in.readLine().split(" ");String[] startTime = array[0].split(":");String[] endTime = array[1].split(":");// 开始时间和结束时间都转换为秒数方便计算int start = Integer.parseInt(startTime[0]) * 3600 + Integer.parseInt(startTime[1]) * 60+ Integer.parseInt(startTime[0]);int end = Integer.parseInt(endTime[0]) * 3600 + Integer.parseInt(endTime[1]) * 60+ Integer.parseInt(endTime[0]);list.add(new Schedule(start, end));}Collections.sort(list);// 默认最早开始的那一个排入档期int cnt = 1;int lastEndTime = list.get(0).end;int size = list.size();for (int i = 1; i < size; i++) {Schedule x = list.get(i);// 如果上一次的结束时间小于等于当前的开始时间就排入档期if (lastEndTime <= x.start) {cnt++;lastEndTime = x.end;}}System.out.println(cnt);}}

【Java】7-5 实验室使用排期 (25分)(List排序)相关推荐

  1. C++学习之路 | PTA(天梯赛)—— L2-010 排座位 (25分)(带注释)(并查集)(精简)

    L2-010 排座位 (25分) 布置宴席最微妙的事情,就是给前来参宴的各位宾客安排座位.无论如何,总不能把两个死对头排到同一张宴会桌旁!这个艰巨任务现在就交给你,对任何一对客人,请编写程序告诉主人他 ...

  2. 7-14 排座位 (25 分)

    7-14 排座位 (25 分) 布置宴席最微妙的事情,就是给前来参宴的各位宾客安排座位.无论如何,总不能把两个死对头排到同一张宴会桌旁!这个艰巨任务现在就交给你,对任何一对客人,请编写程序告诉主人他们 ...

  3. 7-4 统计Java程序中关键词的出现次数 (25 分)

    ** 7-4 统计Java程序中关键词的出现次数 (25 分) ** 编写程序统计一个输入的Java源码中关键字(区分大小写)出现的次数.说明如下: Java中共有53个关键字(自行百度) 从键盘输入 ...

  4. 【CCCC】L2-010 排座位 (25分),,并查集+二维矩阵判定关系

    problem L2-010 排座位 (25分) 布置宴席最微妙的事情,就是给前来参宴的各位宾客安排座位.无论如何,总不能把两个死对头排到同一张宴会桌旁!这个艰巨任务现在就交给你,对任何一对客人,请编 ...

  5. 7-10 排座位 (25分)(并查集)

    7-10 排座位 (25分) 布置宴席最微妙的事情,就是给前来参宴的各位宾客安排座位.无论如何,总不能把两个死对头排到同一张宴会桌旁!这个艰巨任务现在就交给你,对任何一对客人,请编写程序告诉主人他们是 ...

  6. 7-2 奥运排行榜 (25分)非排序算法更低时间复杂度

    7-2 奥运排行榜 (25分) 每年奥运会各大媒体都会公布一个排行榜,但是细心的读者发现,不同国家的排行榜略有不同.比如中国金牌总数列第一的时候,中国媒体就公布"金牌榜":而美国的 ...

  7. 【PAT乙】1085 PAT单位排行 (25分) map排序

    problem 每次 PAT 考试结束后,考试中心都会发布一个考生单位排行榜.本题就请你实现这个功能. 输入格式: 输入第一行给出一个正整数 N(≤10 ​5 ​​ ),即考生人数.随后 N 行,每行 ...

  8. L2-021 点赞狂魔 (25 分) (排序)

    题目链接 输入样例: 5 bob 11 101 102 103 104 105 106 107 108 108 107 107 peter 8 1 2 3 4 3 2 5 1 chris 12 1 2 ...

  9. 7-41 PAT排名汇总 (25 分)多样排序

    原题:https://pintia.cn/problem-sets/15/problems/888 思路: 创建一个结构体,里面包含每个考生的各种信息:姓名,成绩,分区排名,最终排名,地区 struc ...

最新文章

  1. 关于2012年度土建工程专业中级专业技术资格考试有关问题的通知
  2. [转载]使用C#的BitmapData
  3. 剑指offer 面试64题
  4. react中用pace.js
  5. 上手Caffe(一)
  6. 蓝桥杯练习系统历届试题 翻硬币
  7. Java 并发编程之读写锁 ReentrantReadWriteLock
  8. Unity 2D教程: 滚动,场景和音效
  9. vue中动态添加组件
  10. uandroidtool使用教程_apktool反编译详细使用教程_图文教程
  11. 【Letcode】机器人大冒险python3实现
  12. 程序化交易学习笔记(六、模式、日内交易模型、Tick模型)
  13. 数据结构:手把手教你写代码系列总结与说明
  14. 永恒之蓝病毒事件所引发的运维安全行业新思考
  15. 【CSS】盒子模型内边距 ① ( 内边距概念 | 内边距设置语法 | 内边距设置效果 | 代码示例 )
  16. 品牌的成功取决于质量的好坏
  17. opencv学习手册(三)(线条识别)(更新中
  18. 2021年软件开发趋势大预测
  19. 浅析基于二维轮廓线重构表面算法
  20. 不使用strcpy()函数实现字符串复制功能

热门文章

  1. Android Excel(xls,xlsx)表格数据简单生成和读取尝试
  2. 华为ensp基础实验(一)
  3. DNS是什么意思有什么作用了
  4. C语言 7-7 书号判断与纠错
  5. Java+Python 微信公众号自动给女朋友推送专属浪漫早安问候
  6. 微信小程序提示:https://api.map.baidu.com 不在以下 request 合法域名列表中
  7. android手机用户,ZDC:2011年Android手机用户使用行为研究报告
  8. 操作系统基础教程——第六章课后答案
  9. kali虚拟机安装提示安装系统步骤失败
  10. 《开源软件开发导论》作业1