Lang:G++
Edit12345678910111213141516171819202122232425262728293031#include<cstdio>#include<algorithm>using namespace std;int N;int M;struct Node{int value;int mod;bool tag;//0表示价格增幅,1表示硬性调控}tree[300010];int weight[100010];void update_0(int cur,int s,int e,int l,int r,int chg){//[s,e]目前的区间 //增幅if(s>=l&&e<=r){//无论tag是0或1tree[cur].value+=chg*(e-s+1);tree[cur].mod+=chg;}else{int lmid=(s+e-1)/2;int rmid=(s+e+1)/2;if(tree[cur].tag==0){tree[cur*2+1].mod+=tree[cur].mod;tree[cur*2+2].mod+=tree[cur].mod;tree[cur*2+1].value+=tree[cur].mod*(lmid-s+1);tree[cur*2+2].value+=tree[cur].mod*(e-rmid+1);}else{tree[cur*2+1].tag=1;tree[cur*2+2].tag=1;tree[cur*2+1].mod=tree[cur].mod;