樹狀數組入門講解
平常我們會遇到一些對數組進行維護查詢的操作,比較常見的,修改某點的值、求某個區間的和。
即給定一個n個元素的數組$A_1、A_2、..., A_n$,你的任務是設計一個數據結構,支持以下兩種操作:
- $Add(x,d)$操作:讓$A_x$增加$d$。
- $Query(L,R)$:計算$A_L+A_{L+1}+...+A_R$。
如果按簡單的前綴和處理,修改操作是$O(1)$,區間查詢操作是$O(n)$,當操作次數為m時,最壞的時間復雜度是$O(mn)$,n很大時顯然無法接受。如何讓Query和Add都能快速完成呢?有一種稱為二叉搜索樹(Binary Indexed Tree, BIT)的數據結構(俗稱樹狀數組),可以很好地解決這個問題。為此,我們需要先介紹lowbit。
lowbit
樹狀數組入門講解
相關推薦
樹狀數組入門講解
前綴 二叉搜索樹 時間復雜度 復雜 lowbit 數據結構 查詢 問題 區間 平常我們會遇到一些對數組進行維護查詢的操作,比較常見的,修改某點的值、求某個區間的和。 即給定一個n個元素的數組$A_1、A_2、..., A_n$,你的任務是設計一個數據結構,支持以下兩種操作
火柴排隊(NOIP2013)(附樹狀數組專題講解(其實只是粗略。。。))
blog 規律 混亂 ace urn ets gets value update 原題傳送門。。(9018上不去。明天再來搞。) 首先,這道題目是一道神奇的題。 看到這道題,第一眼就覺得2個數組排個序,然後一一對應的時候一定差值最小。 由於我們可以將這2個數列同時進行調換。
二維樹狀數組入門題 poj2642Stars
span ret 二維 show con http for stars 復雜度 題目連接:Stars 題解:把一維的的樹狀數組擴展到二維就行,復雜度為o(mlog^2n) #include<bits/stdc++.h> #include<set
二叉索引樹(樹狀數組)入門(一)
太差 數據結構 pri ret 進行 中一 class 這就是 說過 二叉索引樹,即樹狀數組,被某神犇稱之為是最漂亮的數據結構,所以蒟蒻北籬也去學習了一下傳說中的樹狀數組。 限於蒟蒻北籬的語言表達能力太差(其實是懶),於是引用了度娘的一段對樹狀數組的解釋 樹狀數組(Bin
【bzoj3289】Mato的文件管理 離散化+莫隊算法+樹狀數組
逆序對 sample 單位 oid 逆序 cmp family += efi 原文地址:http://www.cnblogs.com/GXZlegend/p/6805224.html 題目描述 Mato同學從各路神犇以各種方式(你們懂的)收集了許多資料,這些資料一共有n份
SCU - 4441 Necklace(樹狀數組求最長上升子數列)
arranged art 樹狀 max pri nsis names for each cnblogs Necklace frog has \(n\) gems arranged in a cycle, whose beautifulness are \(a_1, a_2,
【BZOJ1935/4822】[Shoi2007]Tree 園丁的煩惱/[Cqoi2017]老C的任務 樹狀數組
tchar get ont n+1 div 區域 spa 都是 struct 題意:兩道題差不多,都是給你一堆平面上的點,每個點有權值,然後m次詢問求某一矩形區域內的點權和 題解:先離散化,然後將詢問拆成左右兩條線段,然後將點和這些線段一起按x坐標排序,在y軸上維護樹狀數
POJ 2299 Ultra-QuickSort(樹狀數組+離散化)
計算 htm upd ace stream max arc clas 下標 http://poj.org/problem?id=2299 題意:給出一組數,求逆序對。 思路: 這道題可以用樹狀數組解決,但是在此之前,需要對數據進行一下預處理。 這道題目的數據可
hdu (1556 樹狀數組)
blank ... ons ted spa 依次 u+ code include 題目鏈接:http://acm.hdu.edu.cn/showproblem.php?pid=1556 Color the ball Time Limit: 9000/3000 MS (
[SPOJ DQUERY] D-query(樹狀數組,離線)
vector scan con oid n) fin %d ear span 題目鏈接:https://vjudge.net/problem/SPOJ-DQUERY 題意:給定數列,q次詢問,問區間內不同數字的個數。 可以用主席樹,但是還有更好寫的辦法。 離線存下所有的詢問
[BZOJ1264][AHOI2006]基因匹配Match(DP + 樹狀數組)
return scanf namespace onclick ring splay urn ret int 傳送門 有點類似LCS,可以把 a[i] 在 b 串中的位置用一個鏈式前向星串起來,由於鏈式前向星是從後往前遍歷,所以可以直接搞。 狀態轉移方程 f[i]
【轉】關於LIS和一類可以用樹狀數組優化的DP 預備知識
免費 關註 最長上升子序列 2.3 bzoj1264 一個數 long 個數字 等於 原文鏈接 http://www.cnblogs.com/liu-runda/p/6193690.html 預備知識 DP(Dynamic Programming)
ZOJ-2386 Ultra-QuickSort 【樹狀數組求逆序數+離散化】
bool 個數 lock ascend nat 前綴和 ron determine inf Description In this problem, you have to analyze a particular sorting algorithm. The algor
[CF808B] Average Sleep Time([強行]樹狀數組,數學)
printf set urn pac int typedef open .com class 題目鏈接:http://codeforces.com/contest/808/problem/B 題意:n個數,求其中每k個數的和的平均值。 鬼知道我怎麽會石樂誌上來就用了樹狀數組
Codeforces Round #365 (Div. 2) D - Mishka and Interesting sum(離線樹狀數組)
turn string 之前 algorithm printf ace r++ void contest http://codeforces.com/contest/703/problem/D 題意: 給出一行數,有m次查詢,每次查詢輸出區間內出現次數為偶數次的數字的異
樹狀數組
sum pid color 數組 ret pre spa class void c為樹狀數組,c[i]存儲i-lowbit[i]+1到i的數組的值 c[x+ lowbit(x)]為c[x]的父親節點 http://cogs.pro/cogs/problem/prob
[BZOJ 3211]花神遊歷各國(並查集+樹狀數組)
image fin 不為 names src scrip 樹狀數組 add bsp Description Solution 樹狀數組單點修改區間查詢 我們知道一個數n最多修改loglogn次就會變為1 並查集維護每個數右邊第一個不為1的位置 #inclu
[BZOJ 4418][Shoi2013]扇形面積並(樹狀數組+二分)
continue define getchar getc amp -1 n) long sin Description 給定N個同心的扇形,求有多少面積,被至少K個扇形所覆蓋。 Solution 打開發現是計算幾何還以為是看錯題號了QwQ 其實就是遇到一條開始的邊+
樹狀數組的進階運用(Stars 數星星)
p s 計算 right star http 復雜 一個 examine maps 英文原題 Problem Description Astronomers often examine star maps where stars are represented by poi
(樹狀數組+離線查詢)HDU 4417 - Super Mario
blog 數組 string 個數 r++ dex 分塊 每次 class 題意: 給定一個數列,最多10萬次查詢l到r不超過h的數字的個數。 分析: 唉,太菜啦。 在線做法應該比較明顯,區間維護平衡樹,用線段樹套平衡樹,或者分塊套平衡樹,應該都能A,但是沒試