题目链接:https://vjudge.net/contest/175173#problem/E
题目大意: 给你n 个区间段l[i], r[i] 0 <= l[i], r[i] <= 1e9 给定一个k, 问你可以选择多少个区间段, 使得最大重叠个数不超过k。 (1 <= n, k <= 1e5)
解题思路: 这道题就是给你n个区间段, 让你选择尽可能多的段使得任意区间不重叠的加强版。 所以首先我们会吧区间段按照r排序,r相同l大的靠前, 因为r越小, 给后面其他段腾出来的时间就越长, 当r相同时, l越大, 区间内重叠的个数才可能会更小。
那么排好序后, 对于当前的区间内, 之前选择的区间段重叠个数小于k, 那么这个区间段可选。 这个区间的最大值也会+1, 那么怎么求区间内有几个重叠的个数呢, 就要用线段树去维护区间最值, 但是这道题的区间范围是1~1e9, 所以离散化一下,才可以搞线段树。
本人又长又慢的线段树:
//2017-7-31 20:58
//2017-8-01 09:40
#include
#include
#include
#include
#include
#include