演算法細節沒工夫寫啦~~~洛谷p3374 【模板】樹狀陣列 1時間複雜度
樹狀陣列和線段樹都是 nlo
gn
nlogn
nlog
n ,但是,你會發現,在查詢時,樹狀陣列最好情況是log
nlogn
logn
(比如8個數,然後查詢8),但是線段樹是所有情況都是 nlo
gn
nlogn
nlog
n,稍慢於樹狀陣列。
空間複雜度
樹狀陣列完勝於線段樹,線段樹要開2倍到4倍記憶體(推薦4倍),但是樹狀陣列一倍就夠了。
適用範圍
樹狀陣列區間、單點的查詢修改完勝線段樹,但是線段樹之所以存在的理由是因為它能適用於很多方面,不僅僅是區間、單點的查詢修改,還有標記等等,可以用於模擬、dp等等,而且空間經過離散化以後也可以相對壓縮,所以適用範圍線段樹更加廣一些。
題目描述如題,已知乙個數列,你需要進行下面兩種操作:
輸入格式
第一行包含兩個正整數 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 的複雜度下進行範圍修改,但是這時只能查詢其中乙個元素的值。一,改點...