樹狀陣列 數列操作

2021-09-25 17:15:49 字數 744 閱讀 2151

題目描述

給定n個數列,規定有兩種操作,一是修改某個元素,二是求子數列[a,b]的連續和。數列的元素個數最多10萬個,詢問操作最多10萬次。

輸入第一行2個整數n,m(n表示輸入n個數列,m表示有m個操作)

第二行輸入n個數列。

接下來m行,每更好行有三個數k,a,b(k=0表示求子數列[a,b]的和,k=1表示第a個數列加b)

輸出輸出若干行數字,表示每次k=0時對應輸出乙個子數列[a,b]的連續和。

樣例輸入

10 5

1 2 3 4 5 6 7 8 9 10

1 1 5

0 1 3

0 4 8

1 7 5

0 4 8

樣例輸出

1130

35思路:建立乙個樹狀陣列進行求解。樹狀陣列板子題

**:

#include#define ll long long

using namespace std;

ll a[100005],c[100005],n,k;

ll lowbit(ll x)//

void update(int i, ll k)//在a[i]上加k

}ll sum(int i)//取得1到i的字首和

return ans;

}int main()

for(int i = 1; i <= k; i++)

return 0;

}

COGS 數列操作a,b,c 樹狀陣列練習

cogs 264.數列操作 問題描述 假設有一列數 1 i n 支援如下兩種操作 1 將 a k 的值加 d k,d 是輸入的數 2 輸出 a s a s 1 a t s,t 都是輸入的數,s t 根據操作要求進行正確操作並輸出結果。輸入格式 輸入檔案第一行乙個整數 n 0 n 100000 第二行...

樹狀陣列操作

題意 序列 n 1e6 有 m n 個詢問,求 l 到 r 中有幾個不相同的數。題解 如果 n 的範圍為 1e5 就是莫隊裸題,但是由於 n 的範圍為 1e6 那麼就是可用樹狀陣列操作,具體就是可發現,只有最後出現的數字有價值,設 r 指標從左到右,如果出現了乙個數之前沒出現過,在樹狀陣列裡此位置 ...

HAOI2004 數列 樹狀陣列

乙個簡單的數列問題 給定乙個長度為n的數列,求這樣的三個元素ai,aj,ak的個數,滿足ai aj ak,且i j k。第一行是乙個整數n n 50000 第二行n個整數ai 0 ai 50000 乙個數,滿足ai aj ak i j k 的個數。5 1 2 3 4 1 用樹狀陣列求出二元組以及逆序...