题意:给一串整数,每次使区段增减一个数,或者查询区段内数字和
思路:线段树模板题,用add标记。具体内容可参考代码或者刘汝佳训练指南。
#include<cstdio>
#include<cstring>
#define MAXN 100005
typedef long long LL;
LL n,Q,ql,qr,v,sumv[MAXN*3],a[MAXN],addv[MAXN*3],_sum;
char op;
void build(LL o,LL L,LL R)
{
if(L==R) {sumv[o]=a[L];return;}
LL M=(L+R)>>1;
build(o*2,L,M); build(o*2+1,M+1,R);
sumv[o]=sumv[o*2]+sumv[o*2+1];//维护根节点
}
void query(LL o,LL L,LL R,LL add)
{
if(q......
阅读全文