題解 P5566 SDOI2008 紅黑樹

2022-05-06 23:15:09 字數 1008 閱讀 1090

最近在刷平衡樹,看到標題就進來了,沒想到是個dp???看了看,發現可以貪心,於是就有了這篇題解。因為紅黑樹本身的性質,所以我們可以通過畫圖來列舉所有情況:

先把每乙個節點看成黑色的,通過紅黑樹性質來把一些結點變成紅色的。

如圖:

最虧的一種情況,兩個黑色節點沒變出來乙個紅色節點。

如圖:

三個黑色節點變成乙個紅色節點,有點浪費。

如圖:

此時四個黑色節點變成兩個紅色節點,黑色節點的利用率最大。

所以,貪心就很明確了。

#include "cstdio"

int n, ans, k;

int main()

printf("%d\n", ans);

k = n + 1;

ans = 0;

while (k > 1)

printf("%d", ans);

return 0;

}

自己想了一種方法,不過好像有億點點慢。

以最小值為例:

用 \(r_\) 表示 \(i\) 個結點,黑高度為 \(j\) 的紅根樹中紅色結點最小值;

\(b_\) 表示 \(i\) 個結點,黑高度為 \(j\) 的黑根樹中紅色結點最小值。

\(\therefore r_=\min\left(,b_+b_+1}\right)\quad(i\leq k\leq i-2)\);

\(\therefore b_=\min\left(,b_,r_+r_,r_+b_}\right)\quad(i\leq k\leq i-2)\);

**就不放了,貪心它不香嗎?

SDOI2008 Sue的小球 題解

給了 n 個小球,第 i 個小球在 x i 初始分值為 y i 同時它會以 dfrac texttt 的速度降低。可以降低為負數 從初始位置開始,每個單位時間可以移動 1 單位長度。收集小球不需要時間,求收集所有小球後能獲得的最大分值。首先,可以想到對每個球按位置從小到大排序。由於總的得分固定,我們...

P2461 SDOI2008 遞迴數列

p2461 sdoi2008 遞迴數列 紀念不看題解 a 掉的第乙個矩陣快速冪 先做完模板題吧p1939 矩陣開 k 1 2 定義函式 f x 為 sum limits xa i 顯然 f x f a i a a a f longrightarrow a i,a a f i 提示到此結束了,仔細想想...

題解 SDOI 2008 鬱悶的小J

話說這題bzoj上沒有,丟乙個洛谷的連線 點我 這題不是很難,對於每一種書建立乙個有序的位置陣列,就是這種書出現的位置集合,然後就是維護這個序列有序了 蒟蒻只能想到兩種 set和平衡樹,set就二分查詢,sbt就find 但mle!蒟蒻的sbt結構體在資料極端情況下欲哭無淚 把裡面和外面的陣列改來改...