線段樹小結

2021-06-08 23:07:29 字數 1375 閱讀 3647

**:

按照牛的部落格寫了幾道題,刷了一周效果不錯

1.複習鞏固了以前的知識

2.還有改正了一些寫線段樹毛病

3.改正了在弱資料的影響下的錯誤方法ac的題目

4.還學到了線段樹新的型別題

總體效果不錯,總結一下

poj 2892 最直觀的是平衡樹,用樹狀陣列的findk的功能更酷一些,線段樹找第k小也可以,據說有把線段樹建和平衡樹的一樣的方法做?有待研究

此外hoj 2910 乙個線段樹dp卡了……而且我無恥的利用了admin的身份看了一下資料,****……就錯了一組資料差1

3月19日更新:

線段樹+掃瞄線的好題 hoj 2723 poj 也有原題stars in your window

以每個點位中心建立乙個w-eps ,h - eps的矩形,然後求最大的面積帶權並

可以證明在這樣乙個矩形中所有的點,是能包含該點覆蓋點最多的矩形,是乙個很重要的思想。

然後就是區間最值的問題了,開始的時候還寫錯了,丟人呀……

hoj 1400

赤裸裸的線段樹dp,但是由於我的英語一直沒懂

簡單的說一定要從1個開始連續的覆蓋才可以。

還有就是插入的時候插入點就可以了,不許要插入區間。

我們可以考察兩個線段,如果沒有交集的話,那麼前面的一條的任何乙個子區間都不會被利用到。

如果有交集的話,他被利用的子區間必定包含右端點區間。

順便hoj 2920

樹狀陣列,線段樹同樣可以解,不過這個樹狀陣列求第k大真的很酷,所以又一次上樹狀陣列了

hdu1255 覆蓋的面積

我的極其糟糕的寫法基本上退化成數了……正解是掃瞄線+記錄被覆蓋兩次的線段長。查詢是o(1)的,而我的方法可能退化成o(nlogn)

**就不現醜了

poj 2828 比較直觀的演算法是二分+樹狀陣列,但是這題確實線段樹**更帥一下!!

基於這樣的考慮,最後乙個人到的位置一定是佇列的確定位置,那麼我們把這個人的位置拿掉以後,剩下的佇列就是前n - 1個人的位置,那麼倒數第二個人同理,取得其在當前佇列中的位置。所以只要從後到前確認每個人的位置就可以了!所以此題只要乙個query就可以了

query**如下:

int query(int p, int x)

pku2886 who gets the most candies?(ac)

殘留題目

pku3225 help with intervals

pku2464 brownie points ii

pku3145 harmony forever

pku2991 crane

hdu1823 luck and love

六道做不下去了,以後再說吧。

自己的效率實在是太低了……線段樹,放一下吧,換ac自動機

線段樹小結

實際上還是稱為區間樹更好理解一些。樹 是一棵樹,而且是一棵二叉樹。線段 樹上的每個節點對應於乙個線段 還是叫 區間 更容易理解,區間的起點和終點通常為整數 同一層的節點所代表的區間,相互不會重疊。同一層節點所代表的區間,加起來是個連續的區間。葉子節點的區間是單位長度,不能再分了。線段樹的深度不超過l...

線段樹小結

線段樹是一顆二叉樹,每乙個結點維護一段區間。因為是二叉樹,所以可以用p 2表示p的左兒子,p 2 1表示p的右兒子。struct node t maxn 2 線段樹要開四倍空間給定長度為n的陣列a 下標從1開始 對區間 1,n 上的值建一顆線段樹。define lson p 2 define rso...

線段樹小結

線段樹基本概念 線段樹結構 線段樹和區間 線段樹性質 向上取整 這樣在進行更新查詢操作的時候,操作的複雜度就可以為log n 量級 葉子節點的數目和根節點表示的區間長度相同 若葉子節點的數目為n,則線段樹的總節點數目為2 n 1。因為線段樹的節點要麼是0度,要麼為2度,根據二叉樹的性質可知。線段樹操...