給出幾個剛開始為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條。線段樹,定義域...