1. 程式人生 > >【AC軍團週報(第四周)第一篇】線段樹從入門到入土【4】(未完成)

【AC軍團週報(第四周)第一篇】線段樹從入門到入土【4】(未完成)

本文章連載AC軍團週報

-> 線段樹 : 從入門到入土【4】

前言

從前有一位遠古神犇,他彙集各大資料結構之精華,經過艱苦卓絕的研究,終於煉製成了一種新的,更簡潔的,更快的線段樹——zkw線段樹

(大霧)

四、zkw線段樹基礎

我們已經學過了線段樹的基礎了,相信大家已經熟練掌握線段樹大概的樣子了。

線段樹什麼樣子,,,二叉樹?

那二叉樹我們怎麼進行查詢修改?是不是用的遞迴?

突然,有一天,你可能想,,,

遞迴好慢啊,又費棧空間,,,

怎麼辦?可以不用遞迴嗎?

二叉樹?誒,好熟悉,我們要是換成完全二叉樹呢?這樣的我們子節點就好找了啊,直接for就好啊

zkw線段樹就是以堆式儲存來實現非遞迴的線段樹。堆式儲存,好高階的名詞,,,實際上,堆式儲存就是指像二叉樹那樣存,可以用一些完全二叉樹的性質大到快速查詢的目的

首先,上個醜圖來了解下zkw線段樹的樣子:

誒,那個8怎麼是紅的?

我們首先可以看到,這個線段樹並不是我們當時看到的線段樹那樣維護的,原來我們是1~8,這次,我們只維護了0~7?我們編號向左挪了一位?

不然。

實質上我們真的只維護了1~7。為什麼?那[0,1)是幹什麼的呢?

那個節點和我們的查詢操作有關。(之後再講)

首先我們要維護一個M。

這個M記錄的是一個2的幾次冪數,且滿足M<=