思路:很简单就不赘述了,更新父节点的函数注意一下就OK
#define _CRT_SECURE_NO_WARNINGS
#include<iostream>
#include<cstdio>
#include<algorithm>
#include<cstring>
using namespace std;
#define MAX 3005
#define ls rt<<1
#define rs ls|1
#define m (l+r)>>1
int sum1[MAX << 2];
int sum2[MAX << 2];
int sum3[MAX << 2];
int col[MAX << 2];
int posx[MAX<<1];
int posz[MAX << 1];
struct pos
{
int l, r, h,z1,z2, s;
pos(){}
pos(int _l, int _r, int _z1,int _z2, int _h, int _s)
{
l = _l;
r = _r;
h = _h;
z1 = _z1;
z2 = _z2;
s = _s;
}
bool operator<(pos b)
{
return h < b.h;
}
}p[MAX << 1],temp[MAX<<1];
void uprt(int l,int r,int rt)
{
if (col[rt] == 1)
{
sum3[rt] = sum2[ls] + sum2[rs] + sum3[ls] + sum3[rs];
sum2[rt] = sum1[ls] + sum1[rs];
sum1[rt] = posx[r + 1] - posx[l] - sum3[rt] - sum