文章
35
粉丝
599
获赞
6
访问
309.8k
#include <iostream>
#include <cstdio>
#include <cstring>
#include <algorithm>
#include <string>
#include <vector>
using namespace std;
typedef long long ll;
const int maxn=2e5+1;
#define lson x<<1
#define rson (x<<1)+1
ll tree[maxn<<2];
ll lazy[maxn<<2];
int arr[maxn];
ll ans;
int n,m;
void push_up(int x){
tree[x]=tree[lson]+tree[rson];
}
void push_down(int x,int l,int r){//向下传递标记
int mid=(l+r)/2;
if(lazy[x]){
lazy[lson]+=lazy[x];
lazy[rson]+=lazy[x];
tree[lson]+=(mid-l+1)*lazy[x];
tree[rson]+=(r-mid)*lazy[x];
lazy[x]=0;//取消本层标记
}
}
void create(int x,int l,int r){
lazy[x]=0;
if(l==r){
tree[x]=arr[l];
return;
}
int mid=(l+r)/2;
create(lson, l, mid);
create(rson, mid+1, r);
push_up(x);
}
void add(int x,int l,int r,int L,int R, int val){
if(L<=l&&R>=r){
tree[x]+=(r-l+1)*val;
lazy[x]+=val;
return;
}
push_down(x, l, r);
int mid=(l...
登录后发布评论
暂无评论,来抢沙发