wikioi 1080 線段樹練習 樹狀陣列

2022-04-01 04:17:17 字數 1359 閱讀 7613

時間限制: 1 s

空間限制: 128000 kb

題目等級 : 鑽石 diamond

題目描述 description

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

輸入描述 input description

輸入檔案第一行為乙個整數n,接下來是n行n個整數,表示格仔中原來的整數。接下乙個正整數m,再接下來有m行,表示m個詢問,第乙個整數表示詢問代號,詢問代號1表示增加,後面的兩個數x和a表示給位置x上的數值增加a,詢問代號2表示區間求和,後面兩個整數表示a和b,表示要求[a,b]之間的區間和。

輸出描述 output description

共m行,每個整數

樣例輸入 sample input64 

5 6 

2 1 34

1 3 5

2 1 4

1 1 9

2 2 6

樣例輸出 sample output

單點更新,區間查詢

#include #include 

#include

#include

#include

#include

#include

#include

#include

#include

#include

typedef

long

long

ll;using

namespace

std;

#define sspeed ios_base::sync_with_stdio(0);cin.tie(0)

#define maxn 100004

intn;

intd[maxn];

int lowbit(int x)//

求某點的管轄範圍

void update1(int x,int num)//

單點修改 使得d[x]+num

}void update2(int x,int num)//

區間修改 使得a[1]一直修改到a[x]

}int getsum1(int x)//

區間求和 表示a[1]一直加到a[x]

returns;}

intmain()

intm;

scanf("%d

",&m);

while(m--)

return0;

}

1080 線段樹練習

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

1080 線段樹練習

時間限制 1 s 空間限制 128000 kb 題目等級 鑽石 diamond description 一行n個方格,開始每個格仔裡都有乙個整數。現在動態地提出一些問題和修改 提問的形式是求某乙個特定的子區間 a,b 中所有元素的和 修改的規則是指定某乙個格仔x,加上或者減去乙個特定的值a。現在要求...

codevs1080線段樹練習(線段樹)

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