线段树区间离散化——牛客多校E
这个区间离散化把我调死了。。 总之用vector来离散化,然后叶子节点维护的是一段区间,记录下每个叶子结点的起点+长度 千万要注意下标不能弄错! #include<bits/stdc++.h> #define MAXN 400005 #define INF 1000000000 #define MOD 1000000007 #define F first #define S second using namespace std; typedef long long ll; typedef pair<int,int> P; int N; int X[MAXN],Y[MAXN],L[MAXN],R[MAXN]; vector<int> v; int X1,X2,Y1,Y2,A1,A2,B1,B2,C1,C2,M1,M2; struct segtree { ll sum[8*MAXN]; int lazy[8*MAXN],len[8*MAXN]; void pushup(int k) { sum[k]=sum[k*2]+sum[k*2+1]; } void pushdown(int k) { if(!lazy[k]) return; for(int i=k*2;i<=k*2+1;i++) { lazy[i]+=lazy[k]; sum[i]+=lazy[k]*len[i]; } lazy