斜率優化 決策單調 xjb講課

2021-07-29 23:13:10 字數 2127 閱讀 9981

大佬們要讓蒟蒻給他們講斜率優化 …….(色色發抖

斜率優化是什麼呢,先看點沒用的東西。

考慮一類動態規劃,滿足這樣的性質:

狀態數有

n 個,乙個狀態的決策數有

n個形似f

[i]=

♂i1f

[j] 定義♂為亂七八糟的運算

這樣的dp有什麼好的性質呢???

首先考慮這樣一種 子型別f[

i]=m

ini−

1j=1

f[j]

+w[j

,i]

當對於乙個w[j,i]滿足四邊形不等式的時候,決策單調

那麼我們首先來說什麼叫四邊形不等式 w[

i,j]

+w[i

+1,j

+1]≤

w[i+

1,j]

+w[i

,j+1

] 是不是一臉蒙蔽?

其實是網上的柿子非得撞壁,寫成這個13樣,不信你移個項 w[

i+1,

j+1]

−w[i

+1,j

]≤w[

i,j+

1]−w

[i,j

] 就是這樣的,對於i+

1 狀態的決策集,

j 位置決策的增長幅度不如在

i位置的決策集中j+

1 位置的增長幅度大

顯然這意味著,如果乙個決策在

i 位置就已經被淘汰,無論他怎麼跑,都追不上其他在i+

1位置的決策了,所以有這樣的性質

對於狀態

x 的兩個決策位置 i≤

j如果i 不如

j優,則對x+

1 必然不選擇i

這有啥用啊?就是把你原來從1列舉變成從x−

1決策點列舉了??

還是暴力,有個卵用?

那我們換乙個角度思考,之前都是對狀態想決策,現在變成對決策想狀態。

對於乙個決策

j 能決策的狀態區間是什麼,一定是狀態集中的一段連續的區間

所以我們可以考慮這樣乙個問題,(以下數字表示決策點位置編號)

對於決策1有這樣的決策區間

1111111111

對於決策2來了,他一定決策這樣的區間

1111122222

以此類推

所以我們對每個決策點決策區間維護單調棧,每來乙個決策,就在單調棧中二分決策點變化位置,彈掉後面的區間,拆開當前區間即可

廢話說完了

斜率優化是個啥???

考慮這樣另一種形式的子型別f[

i]=m

ini−

1j=1

(a[i

]∗f[

j]+b

[i]∗

g[j]

) 美化以下柿子 f[

i]=m

ini−

1j=1

(a[i

]∗x[

j]+b

[i]∗

y[j]

) 求a

∗x+b

∗y的最值?

變成斜截式y=

−ba∗

x+pb

現在乙個決策點變成了乙個數對,(x

,y)

問題轉化成了給定一些斜率固定的直線,以及二維平面上的點集

求一條直線在平面上穿過某一點使得與y軸截距最值

直線方程?線性規劃??

顯然是卡在凸包上的最優啊

下面分情況討論 如果x

是遞增的,斜率也是遞增的

就相當於一邊向後插點維護凸包,一邊在前面用直線卡掉不合法的點

顯然單調佇列,隊尾插點,隊頭按直線彈掉,時間複雜度o(

n)。 如果x遞增,斜率不遞增,就要正常維護凸包,在凸包上二分找到直線卡的點位置。

時間複雜度o(

n∗lo

g2n)

如果x和斜率都不遞增,用平衡樹維護凸包,動態插點,刪點,反正我不會寫。

可寫的方法是cdq,對x進行cdq,左右分別維護凸包,o(

n)合併凸包。

時間複雜度o(

n∗lo

g2n)

決策單調性優化DP 分治優化決策單調性

前言 本來這篇已經寫了 frac 了 然後我關機時忘儲存了。華麗的分割線 對於類似於 dp i j max min dp k 1 j 1 count k,i 不妨設 當 最後一次 max min 更新時 f i,j k 若有 forall i,j in 1,n s.t.i j rightarrow ...

單調佇列優化和決策單調性優化

有時狀態轉移方程形如f i j min w i,j 其中l i,j k j,l i,j l i,j 1 如果兩個決策k1,k2滿足f i 1 k1 f i 1 k2 且k1 k2,那麼k1出現後k2就沒用了。維護乙個佇列,按k從小到大存下所有有用的決策,f i 1 k 是單調上公升的。每次加入新決策...

整理 斜率or單調佇列優化dp

題意 求乙個序列的子區間滿足長度大於k且所有數平均值最大 周源 裡的題。之前有人說周源講的是錯的 其實應該是沒什麼問題的 可以o n 求出 不過這題hdu上的資料不知道怎麼了 反正我在網上找的ac 們全都tle。總之 意思明白就好 反正也是入門題 include include include in...