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

2021-08-19 20:10:44 字數 781 閱讀 4790

給出幾個剛開始為0的格仔,我們可以進行兩種操作:

1、修改:m x y(給格仔x加上y)

2、查詢:c x y(格仔x到格仔y上的數的總和)

線段樹。用cover表示當前這個區間裡的格仔的總和,每次修改的時候我們查詢到代表它那個範圍的節點,然後遞迴回它的根節累加,查詢就是查到了代表x到y的那個區間就返回cover,否則我們判斷然後向它的子節點查詢累加(這個方法慢了點,應該有乙個更好的演算法)。

#include

#include

struct nodetree[

400001];

int n,m,x,y,d;

char c;

intread()

void

build

(int p,

int l,

int r)

}void

find

(int p,

int l,

int r)

}void

insert

(int p,

int v)

}int

count

(int p,

int l,

int r)

void

init()

else

printf

("%d\n"

,count(1

,x,y+1)

);//和n++的原因類似}}

intmain()

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

time limit 10000ms memory limit 65536k case time limit 1000ms 一行n個方格,開始每個格仔裡的數都是0。現在動態地提出一些問題和修改 提問的形式是求某乙個特定的子區間 a,b 中所有元素的和 修改的規則是指定某乙個格仔x,加上或者減去乙個特...

SSLGZ 2648 線段樹練習五

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

2648 線段樹練習題五

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