本文共 1279 字,大约阅读时间需要 4 分钟。
当前等级为\(x\)的魔法书会对等级在\([x,inf]\)的所有人造成\(y\)的影响
所以除了求平均值之外 就是区间修改区间求和
需要使用动态开点 + 标记永久化
需要注意的是 **当前点为空的话 需要返回 目标区间长度*下放标记值**
#include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #define ll long long#define inf 0x7fffffff#define N 200080#define IL inline#define M 10008611#define D double#define R registerusing namespace std;template IL void read(T &_){ T __=0,___=1;char ____=getchar(); while(!isdigit(____)) {if(____=='-') ___=0;____=getchar();} while(isdigit(____)) {__=(__<<1)+(__<<3)+____-'0';____=getchar();} _=___ ? __:-__;}/*-------------OI使我快乐-------------*/ll n,m,root,tot,maxn;struct Node{ ll tag,sum; Node(){tag=sum=0;}}tre[M];struct Qury{ ll knd,x,y;}e[N];ll lson[M],rson[M];IL void update(ll &now,ll lenow,ll rinow,ll le,ll ri,ll d){ if(!now) now=++tot;tre[now].sum+=(ri-le+1)*d; if(lenow==le&&rinow==ri) { tre[now].tag+=d;return; } ll mid=(lenow+rinow)>>1; if(ri<=mid) update(lson[now],lenow,mid,le,ri,d); else if(mid >1; if(ri<=mid) return qury(lson[now],lenow,mid,le,ri,have+tre[now].tag); else if(mid
转载于:https://www.cnblogs.com/LovToLZX/p/10590679.html