SSLGZ 2648 線段樹練習五

2021-07-30 23:09:14 字數 1572 閱讀 1951

問題描述

一行n個方格,開始每個格仔裡的數都是0。現在動態地提出一些問題和修改:提問的形式是求某乙個特定的子區間[a,b]中所有元素的和;修改的規則是指定某乙個格仔x,加上或者減去乙個特定的值a。現在要求你能對每個提問作出正確的回答。1≤n≤100000,提問和修改的總數可能達到100000條。

樣例輸入

20 //方格個數

6 //有幾組操作

m 1 1 //表示修改,第乙個表示格仔位置,第二個數表示在原來的基礎上加上的數,

m 2 2

m 3 4

m 3 -5

m 6 7

c 2 6 //表示統計 ,第乙個數表示起始位置,第二個數表示結束位置

樣例輸出

8演算法討論

由於這是單純的乙個動態區間求和問題,我們可以用樹狀陣列來替代線段樹,可以縮短**。定義c[i]:=a[i-2^k+1]+…+a[i],k為i在二進位制下末尾零的個數。對於區間[x,y]我們可以用[1,y]-[1,x-1]來求。

2648 線段樹練習題五

一行n個方格,開始每個格仔裡的數都是0。現在動態地提出一些問題和修改 提問的形式是求某乙個特定的子區間 a,b 中所有元素的和 修改的規則是指定某乙個格仔x,加上或者減去乙個特定的值a。現在要求你能對每個提問作出正確的回答。1 n 100000,提問和修改的總數可能達到100000條。線段樹,定義域...

線段樹 SSL 2648 線段樹練習題五

給出幾個剛開始為0的格仔,我們可以進行兩種操作 1 修改 m x y 給格仔x加上y 2 查詢 c x y 格仔x到格仔y上的數的總和 線段樹。用cover表示當前這個區間裡的格仔的總和,每次修改的時候我們查詢到代表它那個範圍的節點,然後遞迴回它的根節累加,查詢就是查到了代表x到y的那個區間就返回c...

SSLGZ 2646 線段樹練習三

問題描述 給定一條長度為m的線段,有n個操作,每個操作有3個數字x,y,z表示把區間 x,y 染成顏色z,詢問染完色之後,這條長度為m的線段一共有幾種顏色。規定 線段的顏色可以相同。連續的相同顏色被視作一段。問x軸被分成多少段。樣例輸入 4 20 四條,總長度為20 10 19 1 2 9 2 5 ...