樹狀陣列模板

2021-10-10 09:42:54 字數 1243 閱讀 1398

演算法細節沒工夫寫啦~~~

時間複雜度

樹狀陣列和線段樹都是 nlo

gn

nlogn

nlog

n ,但是,你會發現,在查詢時,樹狀陣列最好情況是log

nlogn

logn

(比如8個數,然後查詢8),但是線段樹是所有情況都是 nlo

gn

nlogn

nlog

n,稍慢於樹狀陣列。

空間複雜度

樹狀陣列完勝於線段樹,線段樹要開2倍到4倍記憶體(推薦4倍),但是樹狀陣列一倍就夠了。

適用範圍

樹狀陣列區間、單點的查詢修改完勝線段樹,但是線段樹之所以存在的理由是因為它能適用於很多方面,不僅僅是區間、單點的查詢修改,還有標記等等,可以用於模擬、dp等等,而且空間經過離散化以後也可以相對壓縮,所以適用範圍線段樹更加廣一些。

洛谷p3374 【模板】樹狀陣列 1

題目描述

如題,已知乙個數列,你需要進行下面兩種操作:

輸入格式

第一行包含兩個正整數 n,m,分別表示該數列數字的個數和操作的總個數。

第二行包含 n 個用空格分隔的整數,其中第 i 個數字表示數列第 i 項的初始值。

接下來 m 行每行包含 3 個整數,表示乙個操作,具體如下:

輸出格式

輸出包含若干行整數,即為所有操作 22 的結果。

#include

#include

using

namespace std;

#define n 5100

int tree[n]

, n;

inline

intlowbit

(int i)

void

add(

int i,

int k)

}int

sum(

int i)

return ans;

}int

main()

for(

int i =

0; i < m; i++

)case2:

}}}

樹狀陣列模板

假設有一列數 1 i n 支援如下兩種操作 1.將ai的值加d。2.輸出ai ai 1 aj 1 i j n 樹狀陣列是一種特殊的資料結構,這種資料結構的時空複雜度和線段樹相似,但是它的係數要小得多 hdu 1166 敵兵布陣 題目 a國在海岸線沿直線布置了n個工兵營地。由於採取了某種先進的監測手段...

樹狀陣列模板

已知乙個數列,你需要進行下面兩種操作 1.將某區間每乙個數數加上x 2.求出某乙個數的和 這種水水的樹狀陣列,博主就不做介紹,直接上 希望大家可以多多捧場!include include include include include include include include include ...

樹狀陣列模板

樹狀陣列 binary indexed tree bit fenwick tree 是乙個查詢和修改複雜度都為log n 的資料結構。主要用於查詢任意兩位之間的所有元素之和,但是每次只能修改乙個元素的值 經過簡單修改可以在log n 的複雜度下進行範圍修改,但是這時只能查詢其中乙個元素的值。一,改點...