媽的這玩意兒實在是太神秘了。。。一會兒對x排序一會兒對y排序,一會兒建凸包一會兒李超樹。。。
這些細節性的東西還是寫乙個總結為好。不然以後一直犯要吃大虧。
眾所周知斜率優化的方程都能夠寫成類似 \(dp[i]=\max_^(x[i]\times k[j]+b[j])\)。即乙個一次函式的形式,並且這個一次函式是動態給出的。這個形式決定了斜率優化肯定能用李超樹去做。
但是如果要求線性呢?線性一般使用單調佇列,還是得去推柿子。
假設我們有兩個決策點 \(i\) 和 \(j\),要求在 \(x\) 處的最值。
眾所周知最值問題都可以通過尋找誰比誰遜來解決。
\[x\times k[i]+b[i]
\[x<\frac
\]\[-x>\frac
\]你也可以:
\[\frac<\frac
\]\[\frac>-\frac
\]對於第一種情況,需要找到乙個點滿足前面的斜率都比 \(-x\) 小,後面的都比 \(-x\) 大,所以需要斜率遞增的下凸殼。同理,後者需要上凸殼。
但是需要注意幾點。
如果要使用單調佇列維護凸殼,需要保證給出的分母是遞增的。(因為實際上是字首的凸殼,每次都需要重新排序的);如果要線性尋找答案,需要保證對應的 \(-x\) 和 \(-\frac\) 是遞增的。
這個其實做題的時候分析比較好。。。如果記結論容易寫掛的說。。。
如果以上二者都不滿足,最好使用李超線段樹,常數不大+好寫好調,不像某個cdq套凸包要調半天。
斜率優化總結
斜率優化是用於優化一些線性dp,主要思想類似於凸包。下面來看乙個例題 hdu 3507 由題意不難想到是dp,也很容易退出轉移過程f i m in f j s i s j 2 m i 0 i 1 但是一看 n 的範圍馬上就萎了,下面來看看用斜率怎麼優化。現將推出的轉移方程化簡 f i m in f ...
斜率優化總結
考慮如下 dp dp i max min a i b j c i d j j i 其中,a i c i 只與i有關,b j d j 只與j有關。括號裡有與i,j同時有關的項,導致單調佇列優化失效,但是如果這樣的項只有乙個可以採用斜率優化。方法如下 將此dp方程轉化為 dp i a i max min...
斜率優化總結
題目 luogu p2365 任務安排 題解 題解 p2365 任務安排 對於此類方程 f i begin f j val i,j end 暫時忽略min和範圍得 f i f j val i,j 整理得 f j val i,j f i 令 val i,j f i g j h i 則 f j f i ...