P4915 帕秋莉的魔导书


题目链接

题意分析

当前等级为\(x\)的魔法书会对等级在\([x,inf]\)的所有人造成\(y\)的影响

所以除了求平均值之外 就是区间修改区间求和

需要使用动态开点 + 标记永久化

需要注意的是 当前点为空的话 需要返回 目标区间长度*下放标记值

CODE:

#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 register
using namespace std;
templateIL 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

HEOI 2019 RP++

相关