codevs1080線段樹練習(樹狀陣列)

2021-07-06 06:44:10 字數 1060 閱讀 2889

題目描述 description 一行

n個方格,開始每個格仔裡都有乙個整數。現在動態地提出一些問題和修改:提問的形式是求某乙個特定的子區間

[a,b]

中所有元素的和;修改的規則是指定某乙個格仔

x,加上或者減去乙個特定的值

a。現在要求你能對每個提問作出正確的回答。1≤

n<100000,

,提問和修改的總數m<100

00條。

輸入描述 input description

輸入檔案第一行為

乙個整數

n,接下來是n行n

個整數,表示格仔中原來的整數。接下

乙個正整數

m,再接下

來有m行,表示

m個詢問,第乙個整數表示詢問代號,詢問代號

1表示增加,後面的兩個數x和

a表示給位置

x上的數值增加

a,詢問代號

2表示區間求和,後面兩個整數表示a和

b,表示要求

[a,b]

之間的區間和。

輸出描述 output description

共m行,每個整數

樣例輸入 sample input 6

4 5 

6 2 1 3

41 3 5

2 1 4

1 1 9

2 2 6

樣例輸出 sample output 22

22 資料範圍及提示 data size & hint

1≤n≤100000, m≤10000 。

#includeusing namespace std;

int n,i,m,a[100001],x,y,z;

int lowbit(int x)

void add(int loc,int value)

int query(int loc)

int main()

scanf("%d",&m);

for (i=1;i<=m;i++)

}return 0;

}

Codevs 1080 線段樹練習

portal 這道題倒是點醒了我 樹狀陣列和線段樹不一樣 半小時前才學的概念傻傻分不清 主要思路是利用樹狀陣列儲存字首和,然後字首和相減得到區間和。線段樹的知識在藍書裡出現了,莫名其妙就從紫書公升級了?mark下我看的那篇部落格 這位也是厲害,用三種方法 include includeusing n...

Codevs 1080 線段樹練習

1080 線段樹練習 時間限制 1 s 空間限制 128000 kb 題目等級 鑽石 diamond 傳送門題目描述 description 一行n個方格,開始每個格仔裡都有乙個整數。現在動態地提出一些問題和修改 提問的形式是求某乙個特定的子區間 a,b 中所有元素的和 修改的規則是指定某乙個格仔x...

Codevs1080 線段樹練習

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