题意

你有两个栈,有 \(n\) 个货物,每个货物有一个进栈时间和出栈时间(所有时间的并集是1~2n),问有多少种不同的入栈方案。

\(n\le 10^6\)

分析

  • 把每个货物的存在看成区间,相交的区间不能在同一个栈中。这样就有了 \(O(n^2)\) 连边的方式,再用二分图染色判断一下是否合法即可。合法方案数就是 \(2^{连通块个数}\)。
  • 考虑将所有区间按照左端点排序,用一个 set 维护和当前区间相交的区间。由于不能出现三元环所以所有和当前区间相交的区间都是包含关系,这种包含区间之间形成了树形结构,每个区间记录其父亲。只需要保留右端点最小的那一个(可能之后会变成其父亲),剩余的用另一种边表示这些区间的颜色相同。保留的区间在之后的包含关系中一定作为最大的出现。
  • 复杂度 \(O(nlogn)\)

代码

代码链接

最新文章

  1. 11-JS基础
  2. Linux网络编程-SIGPIPE信号导致的程序退出问题
  3. Activity之间的数据传递
  4. yum.pid 已被锁定
  5. MVC三个IOC注入点之Ninject使用示例
  6. Java 四种线程池的用法分析
  7. 《java.util.concurrent 包源码阅读》27 Phaser 第一部分
  8. kubernetes调度pod运行于master节点上
  9. 【转】详解web.xml中元素的加载顺序
  10. Linux第四节课学习笔记
  11. 洛谷P2866 [USACO06NOV]糟糕的一天Bad Hair Day(单调栈)
  12. u-boot(二)makefile
  13. 弱符号__attribute__((weak))
  14. java用poi读取Excel表格中的数据
  15. Android 音视频深入 五 完美的录视频(附源码下载)
  16. oracle导入大sql文件
  17. ES版本控制
  18. [leetcode]Symmetric Tree @ Python
  19. android(二) SurfaceView
  20. div内容过长自动省略号

热门文章

  1. LeetCode题解之Sort List
  2. Oracle EBS OPM 发放生产批
  3. Java高并发编程(四)
  4. CSS| 颜色名
  5. 转:asp.net mvc下的多语言方案 包含Html,Javascript和图片
  6. java中的String类的不可变性的小例子
  7. Django商城项目笔记No.3用户部分-用户模型类
  8. FIO_工具_专业
  9. VS2013自带报表+打印功能
  10. 开发指南专题十四:JEECG微云高速开发平台MiniDao 介绍