給定乙個長度為n(n<=100000),初始值都為0的序列,x(x<=10000)次的修改某些位置上的數字,每次加上乙個數,然後提出y (y<=10000)個問題,求每段區間的和。時間限制1秒。
輸入格式:
第一行1個數,表示序列的長度n
第二行1個數,表示操作的次數w
後面依次是w行,分別表示加入和詢問操作
其中,加入用x表示,詢問用y表示
x的格式為"x a b" 表示在序列a的位置加上b
y的格式為"y a b" 表示詢問a到b區間的加和
輸出格式:
每行乙個數,分別是每次詢問的結果
輸入樣例#1: 複製
54x 3 8
y 1 3
x 4 9
y 3 4
輸出樣例#1: 複製
817
題解:線段樹板子石錘!
//luogu-judger-enable-o2
#include#include
#include
#include
#include
#include
#define maxn 100007
using
namespace
std;
intn,m,x,y,z;
char jjj[4
];long
long sum[maxn<<2],add[maxn<<2
];int
a[maxn];
void pushup(int rt)
void build(int l,int r,int
rt)
int m=(l+r)>>1
; build(l,m,rt
<<1
); build(m+1,r,rt<<1|1
); pushup(rt);
}void pushdown(int rt,int ln,int
rn)}
long
long query(int l,int r,int l,int r,int
rt)
void update(int l,int r,int c,int l,int r,int
rt)
int m=(l+r)>>1
; pushdown(rt,m-l+1,r-m);
if(l <= m) update(l,r,c,l,m,rt<<1
);
if(r > m) update(l,r,c,m+1,r,rt<<1|1
); pushup(rt);
} int
main()
else}}
return0;
}
洛谷2068 統計和
給定乙個長度為n n 100000 初始值都為0的序列,x x 10000 次的修改某些位置上的數字,每次加上乙個數,然後提出y y 10000 個問題,求每段區間的和。時間限制1秒。輸入格式 第一行1個數,表示序列的長度n 第二行1個數,表示操作的次數w 後面依次是w行,分別表示加入和詢問操作 其...
洛谷P2068 統計和
給定乙個長度為 n n leq 100000 初始值都為 0 的序列,x x leq 10000 次的修改某些位置上的數字,每次加上乙個數,然後提出 y y leq 10000 個問題,求每段區間的和。時間限制 1 秒。輸入格式 第一行 1 個數,表示序列的長度 n 第二行 1 個數,表示操作的次數...
洛谷P2068 統計和題解
給定乙個長度為n n 100000 初始值都為0的序列,x x 10000 次的修改某些位置上的數字,每次加上乙個數,然後提出y y 10000 個問題,求每段區間的和。時間限制1秒。第一行1個數,表示序列的長度n 第二行1個數,表示操作的次數w 後面依次是w行,分別表示加入和詢問操作 其中,加入用...