非常好的题目:
http://blog.csdn.net/benbenab/article/details/8487988
1. 开会的题目,问给一堆会议,每个会议一个开始时间,结束时间,问有没有 overlap
|
2. 如果这些会议有overlap 求最小需要多少房间
|
非常好的解法:
直接把开始时间和结束时间混在一起排序,每到开始时间,会议室++,到结束时间,会议室--。就可以得出最多需要多少会议室(以及有没有重叠)。
刚开始看到覆盖类问题,第一时间就会想到线段树,用来解决区间查找问题。但是对于具体的应用,还是不甚了了。所以尽量还是不要用区间树。
每次可以进行如下的三种操作中的一种,
a, 在给定区间的每个数上加上一个特定的值;
b, 将指定区间的所有数设置成一个统一的值;
c, 询问一个区间上的最小值,最大值,以及区间的所有树的和。
跟这个应用还是不太一样。