The Union of k-Segments
题意
略
解决
- 对点分类,分为左端点和右端点
- 所有点丢到一个vector里按照x坐标升序排序,坐标相同时优先考虑左端点
- 按照区间计数原理,从前往后扫描所有点,扫描到左端点计数器+1,右端点计数器-1,那么计数器>=k的区间都是合法区间
- 通过标记去维护合法区间的起始位置和结束位置,维护答案即可
int ans1[maxn] , ans2[maxn];
struct node
{
int x;
int flag; //左端点为1 右端点-1
node(){}
node(int xx,int ff){
x = xx;
flag = ff;
}
bool operator<(node n2)const{