化柿子的時候化成一次函數的形式更直觀一些(對我來說)。
如果是單調棧上二分 / 單調隊列,這一類的,通常都是斜率或者某些東西具有單調性,這個東西不需要也盡量不要對每一種情況都整理下來應該怎么優化,是死板的。斜率優化是把一類 dp 問題變成數據結構問題,讓數據結構維護這個凸包(或者說維護凸包上兩點連線的斜率),應該具體情況具體分析。
如果加的決策點沒有單調性,通常是 平衡樹 / CDQ 分治 來解決,平衡樹的話就是直接維護這個凸包,CDQ 分治則是通過分治來轉成靜態問題,然后用單調棧等數據結構解決。
有一種更普遍的做法,跳出維護凸包給我們思維上的限制,用李超樹來維護一次函數(直線),也是一個 \(\log\) 的,而且碼力要求和常數上肯定都優於平衡樹,但常數還有可能比較大(相比 CDQ 分治來說?),但不需要動腦子(也就是前文說的具體情況具體分析,分析哪些變量是單調的,這個凸包的形狀是怎樣的,依次加進去的決策點坐標的單調性,截凸包的直線斜率的單調性...),論性價比李超樹也是一個很好的選擇。