洛谷 2068 統計和

2022-05-26 08:48:10 字數 1419 閱讀 4930

給定乙個長度為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: 複製

5

4x 3 8

y 1 3

x 4 9

y 3 4

輸出樣例#1: 複製

8

17

題解:線段樹板子石錘!

//

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行,分別表示加入和詢問操作 其中,加入用...