五月天青色头像情侣网名,国产亚洲av片在线观看18女人,黑人巨茎大战俄罗斯美女,扒下她的小内裤打屁股

歡迎光臨散文網(wǎng) 會員登陸 & 注冊

數(shù)據(jù)類型·樹狀數(shù)組

2023-02-18 13:26 作者:水源菌  | 我要投稿

CSDN博客鏈接http://t.csdn.cn/f4OaS

樹狀數(shù)組問題

樹狀數(shù)組一般用于解決:給定一個數(shù)組,修改其中某些元素的值,求該數(shù)組某個區(qū)間的和的問題。如果我們用暴力方法來解決,那么每次查詢的時間復(fù)雜度都是 ?O(n)?,以這種方法一旦數(shù)值過大,就會時間超限。于是我們就要用到樹狀數(shù)組的思路,它每次查詢的時間復(fù)雜度就是O(log%5C%20n),這樣就可以解決數(shù)值比較大的問題了。

那么我們來看一道模板例題:https://www.luogu.com.cn/problem/P3374,題干如下:

題目描述

如題,已知一個數(shù)列,你需要進(jìn)行下面兩種操作:

  • 將某一個數(shù)加上 x

  • 求出某區(qū)間每一個數(shù)的和

輸入格式

第一行包含兩個正整數(shù) n%2Cm,分別表示該數(shù)列數(shù)字的個數(shù)和操作的總個數(shù)。??

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

接下來 m 行每行包含3 個整數(shù),表示一個操作,具體如下:

  • 1 x k ?含義:將第 x 個數(shù)加上 k

  • 2 x y? 含義:輸出區(qū)間%5Bx%2Cy%5D 內(nèi)每個數(shù)的和

輸出格式

輸出包含若干行整數(shù),即為所有操作 2 的結(jié)果。

樣例 #1

樣例輸入 #1

樣例輸出 #1

提示

【數(shù)據(jù)范圍】

對于30%5C%25 的數(shù)據(jù),1%20%5Cle%20n%20%5Cle%208,1%5Cle%20m%20%5Cle%2010; ?

對于 70%5C%25 的數(shù)據(jù),1%5Cle%20n%2Cm%20%5Cle%2010%5E4; ?

對于 100%5C%25?的數(shù)據(jù),1%5Cle%20n%2Cm%20%5Cle%205%5Ctimes%2010%5E5。

數(shù)據(jù)保證對于任意時刻,a 的任意子區(qū)間(包括長度為1n 的子區(qū)間)和均在 %5B-2%5E%7B31%7D%2C%202%5E%7B31%7D)?范圍內(nèi)。

樣例說明:

樣例說明

故輸出結(jié)果14、16

解決方法

?I ?暴力(70 pts)

當(dāng)然,我們也可以用前綴和的方法使查詢的時間復(fù)雜度降到 $O(1)$ ,但是對于每次修改數(shù)組中的數(shù)據(jù),復(fù)雜度就會變高,所以說整體的時間復(fù)雜度基本沒有變化。

II 樹狀數(shù)組

樹狀數(shù)組的本質(zhì)還是一個數(shù)組,但是我們可以用以下方法將其看作一個二叉樹,數(shù)組 $a$ 指的就是原數(shù)組,c 指的是樹狀數(shù)組:


樹狀數(shù)組示意圖

這個時候我們要用到 lowbit() 函數(shù)來計算 c%5Bi%5D 的值:

也可以這樣寫:

然后得出區(qū)間和:

向樹狀數(shù)組中添加元素:

這樣我們就寫好了樹狀數(shù)組的模板。

完整代碼如下:

總結(jié)

  • 樹狀數(shù)組利用二進(jìn)制更新數(shù)組,將時間復(fù)雜度降低到 $O(log n)$

  • 樹狀數(shù)組每個節(jié)點(diǎn)的值就是它的前綴和


數(shù)據(jù)類型·樹狀數(shù)組的評論 (共 條)

分享到微博請遵守國家法律
永嘉县| 巴里| 广宗县| 东兰县| 洪江市| 弥渡县| 绥德县| 江西省| 临潭县| 清新县| 泽库县| 温泉县| 育儿| 同江市| 龙岩市| 天门市| 沙雅县| 恩平市| 广宗县| 鄂伦春自治旗| 新蔡县| 河北省| 来凤县| 晋城| 咸丰县| 蓬溪县| 青田县| 富宁县| 土默特左旗| 泸定县| 时尚| 逊克县| 衡东县| 石台县| 剑阁县| 宕昌县| 忻城县| 施秉县| 东海县| 准格尔旗| 临澧县|