洛谷2068 統計和

2022-05-01 05:27:10 字數 1111 閱讀 6568

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

線段樹;

1 #include2

const

int maxn=1e5+10;3

intn,m;

4int

t[maxn];

5char

ch;6

intx,y,z;

7void add(int k,int l,intr)9

int mid=l+r>>1,ls=k<<1,rs=ls|1;10

if(x<=mid) add(ls,l,mid);

11else add(rs,mid+1

,r);

12 t[k]=t[ls]+t[rs];13}

14void tot(int k,int l,int

r)16

int mid=l+r>>1,ls=k<<1,rs=ls|1;17

if(x<=mid) tot(ls,l,mid);

18if(y>mid) tot(rs,mid+1

,r);19}

20int

main()

28if(ch=='y'

)33}34

return0;

35 }

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