#include<cstring>
#include<algorithm>
#include<cstdio>
#include<cstdlib>
#define lson rt<<1
#define rson rt<<1|1
#define fmid (tree[rt].l + tree[rt].r)>>1
using namespace std;
const int maxn = 1e6 + 9;
struct node
{
int l, r;
int s;
long long len, len1;
};
struct edge
{
long long l, r, h;
int f;
};
edge line[maxn<<1];
node tree[maxn<<3];
long long x[maxn<<1];
bool cmp(edge a, edge b)
{
return a.h < b.h;
}
void build(int l, int r, int rt)
{
tree[rt].l = l, tree[rt].r = r;
tree[rt].len1 = 0, tree[rt].len = 0;
tree[rt].s = 0;
if(l == r)
return;
int mid = fmid;
build(l, mid, lson);
build(mid + 1, r, rson);
}
void pushup(int rt)
{
if(tree[rt].s > 1)
{
tree[rt].len1 = x[tree[rt].r + 1] - x[tree[rt].l];
}
else if(tree[rt].s == 1)
{
tree[rt].len = x[tre
扫描线线段树模板
最新推荐文章于 2023-05-18 17:26:05 发布
本文详细介绍了扫描线线段树的模板及其应用,包括如何构建、查询和更新线段。通过实例解析,帮助读者理解如何利用扫描线线段树解决区间查询和修改问题。
摘要由CSDN通过智能技术生成