问题描述

  强大的kAc建立了强大的帝国,但人民深受其学霸及23文化的压迫,于是勇敢的鹏决心反抗。
  kAc帝国防守森严,鹏带领着小伙伴们躲在城外的草堆叶子中,称为叶子鹏。
  kAc帝国的派出的n个看守员都发现了这一问题,第i个人会告诉你在第li个草堆到第ri个草堆里面有人,要求你计算所有草堆中最少的人数,以商议应对。
  “你为什么这么厉害”,得到过kAc衷心赞美的你必将全力以赴。

输入格式

  第一行一个数字n,接下来2到n+1行,每行两个数li和ri,如题。

输出格式

  输出一个数,表示最少人数。

样例输入

5
2 4
1 3
5 7
1 8
8 8

样例输出

3

样例输入

5
117590 173621
45060 118812
71296 101768
89958 174054
38588 89652

样例输出

2

数据规模和约定

  30%的数据n<=10
  70%的数据n<=100
  100%的数据n<=1000
  所有数字均在int表示范围内

思路:

  1. 实际上是求n个看守员发现有人区间的所有交集的个数,即对所有区间求交集,交集的个数即为所求的人数
  2. 先按 ri 排序(升序),取最小的 r0 为 minr,在 length(列表)中添加 minr,删除 haystacks(集合) 中包含 minr 的区间,然后循环再取新的 minr,一直删到 haystacks 中没有元素(haystacks.size() == 0)。然后 length 的长度就是所求的最少人数。
  • 先从 ri 最小的那个看守员说的区间开始往后遍历。

  • 只要这个看守员说的 ri 在后一个看守员说的区间(li和ri)之间,那么后一个看守员说的区间就可以删除,因为后一个看守员说的区间一定和最小 ri 的那个看守员说的区间重合了(即区间之间有交集则人数加一)。遍历到最后这个最小 ri 的那个看守员说的区间也会被删除。

  • 然后从剩下的最小 ri 的那个看守员说的区间开始往后遍历

代码如下:

import java.util.*;public class Main {/*** 内部类 ——> 草堆* l ——> 左边界* r ——> 右边界*/public static class Haystack {public int l;public int r;public Haystack(int l, int r) {this.l = l;this.r = r;}public int getR() {return r;}}public static void main(String[] args) {Scanner sc = new Scanner(System.in);//n个看守员int n = sc.nextInt();//草堆集合List<Haystack> haystacks = new ArrayList<>();int l, r;for (int i = 0; i < n; i++) {l = sc.nextInt();r = sc.nextInt();haystacks.add(new Haystack(l, r));}//按 ri 排序(升序)haystacks.sort(Comparator.comparing(Haystack::getR));//记录 n 个区间的交集List<Object> length = new ArrayList<>();int minr, k;while (haystacks.size() != 0) {Haystack haystack = haystacks.get(0);minr = haystack.r;length.add(minr);k = 0;l = haystack.l;while (minr >= l) {k += 1;if (k < haystacks.size()) {l = haystacks.get(k).l;} else {minr = -1;}}//因为要删除haystacks里面的多个值,所以会涉及到一个问题,就是当你删除掉下标为1的元素,//原来下标为2的元素会自动改变自己的下标为1,后面的元素依次把自己的下标值减一//鉴于这种情况,我们想循环删除haystacks中的多个元素的话,就必须从后往前删,这样保障了你删除了一个元素之后,//haystacks中元素的下标移动不会影响到那些需要删除但是还未删除到的元素// if (k > 0) {//     haystacks.subList(0, k).clear();//subList() 方法用于截取并返回动态数组中的一部分。// }代码等同for循环代码for (int i = k - 1; i >= 0; i--) {haystacks.remove(i);}}System.out.println(length.size());}
}

蓝桥杯 ALGO-986 藏匿的刺客 java题解相关推荐

  1. 标题 日期问题java蓝桥杯,日期类的使用(java)-蓝桥杯

    蓝桥杯日期问题常考,java提供了日期类很方便: //日历类 Calendar c = Calendar.getInstance(); // 获取实例化对象 Date date =c.getTime( ...

  2. 第十二届蓝桥杯大赛软件赛省赛 Java 大学 B 组(2021年4月18日)

    第十二届蓝桥杯大赛软件赛省赛 Java 大学 B 组第一场 下载原题PDF 欢迎评论区留下答案讨论!!! 试题 A: ASC 本题总分:5 分 [问题描述] 已知大写字母 A 的 ASCII 码为 6 ...

  3. 第十届蓝桥杯大赛软件赛省赛——Java大学A组

    第十届蓝桥杯大赛软件赛省赛--Java大学A组 试题A:平方和 public class TestA {static boolean has2019(int number) {String strin ...

  4. 第十三届蓝桥杯大赛软件赛省赛 Java 研究生组

    第十三届蓝桥杯大赛软件赛省赛 Java 研究生组 [考生须知] 考试开始后,选手首先下载题目,并使用考场现场公布的解压密码解压试 题. 考试时间为 4 小时.考试期间选手可浏览自己已经提交的答案,被浏 ...

  5. 蓝桥杯 试题 算法训练 筛选号码 Java

    蓝桥杯 试题 算法训练 筛选号码Java 算法训练 筛选号码 资源限制 时间限制:1.0s 内存限制:512.0MB 问题描述 有n个人围成一圈,顺序排号(编号为1到n).从第1个人开始报数(从1到3 ...

  6. 第十二届蓝桥杯大赛软件赛省赛Java 大学 C 组

    第十二届蓝桥杯大赛软件赛省赛Java 大学 C 组 试题 A: ASC 试题 B: 空间 试题 C: 卡片 试题 D: 相乘 试题 E: 路径 试题 F: 时间显示 试题 G: 最少砝码 试题 H: ...

  7. 蓝桥杯第十届省赛java组解析(灵能传输 四星难度,后缀表达式 两星难度)

    第一题太简单懒得复制题目了 答案是:490 第二题: 试题 B: 不同子串 本题总分:5 分 [问题描述] 一个字符串的非空子串是指字符串中长度至少为 1 的连续的一段字符组成 的串.例如,字符串aa ...

  8. 第十四届蓝桥杯第一期模拟赛试题与题解 C++

    第十四届蓝桥杯第一期模拟赛试题与题解 C++ 试题 A 题解:位运算 试题 B 题解:日历模拟 试题 C 题解:double 求和 试题 D 题解:枚举 试题 E 题解:二维前缀和 试题 F 题解:两 ...

  9. 2018第九届蓝桥杯省赛c/c++ A 组题解(填空部分)

    第九届蓝桥杯省赛c/c++ A 组题解(部分) 1 分数 等比数列求前n项和 2 星期一 解题思路: 3 乘积尾零 4 第几个幸运数 5 打印图形 第九届蓝桥杯省赛c/c++ A 组题解(部分) 1 ...

最新文章

  1. 疫情之下,武汉女生在家中答辩,获得国外博士学位!
  2. 学Python真的可以无所欲为,连对门小姐姐的家wifi密码都可以破解
  3. Tark钱包面向全球招募优秀上币方,千亿财富等你来拿!
  4. 软件专业人才应具备四种素质
  5. 启动Spark Shell,在Spark Shell中编写WordCount程序,在IDEA中编写WordCount的Maven程序,spark-submit使用spark的jar来做单词统计
  6. 研究发现视频会议增加员工压力、 谷歌地球升级4D交互体验、Apple新品发布、网飞用户增长缓慢等|Decode the Week
  7. 2018中国国际大数据大会专属报名通道(免费)开通啦!
  8. 【AI视野·今日CV 计算机视觉论文速览 第201期】Wed, 19 May 2021
  9. OS笔记047代理传值和block传值
  10. java script应用领域_JavaScript的应用
  11. apache 配置用户级目录
  12. java事务传播机制事例,spring事务传播机制
  13. SpringBoot学习感悟
  14. .NET Framework各个版本(3.5 - 4.0)
  15. switch范围判断、switch区间判断
  16. 那些年用过的机械键盘#入坑keychron#
  17. 移动应用开发的未来是什么?——六大趋势指引企业顺水行舟
  18. AI-人工智能学习线路图
  19. 关系型数据库Mysql
  20. Digital Roots

热门文章

  1. 云服务器实战篇 - Google免费云申请、登录、使用
  2. MySql的安装与连接,客户端Navicate
  3. 海康工业相机SDK+OpenCV实例(1):海康SDK和OPENCV的安装与编译
  4. r语言library什么意思_自动挡上的P、R、N、D、S、L是什么意思?新手多学学
  5. Context3D类的dispose方法
  6. “如何获取一篇论文的代码以及运行”相关教程
  7. 定时任务 @Scheduled cron、fixedRate、fixedDelay、fixedDelayString、fixedRateString
  8. JT/T808协议之:0x0001终端通用应答和0x8001平台通用应答
  9. 2022年深圳杯A题破除“尖叫效应”与“回声室效应”走出“信息茧房”
  10. 动圈喇叭中铜环音膜有什么重要作用