一、性質:一種動態規劃的優化。
二、前置:dp、單調佇列。
三、適用:\(dp[i]=a[i]*b[j]+c[i]+d[j]\)。\(a[i]\)單調遞增。
四、方法:
移項:\(-a[i]b[j]+dp[i]-a[i]=d[j]\),把\(b[j]\)看作\(x\),把\(d[j]\)看作\(y\),把\(-a[i]\)看作\(k\):\(kx+dp[i]-a[i]=y\)。此直線過\((x,y)\)且斜率已知為\(k\),要求截距最小。維護乙個下凸殼。對於每個\(i\),要求的是第乙個滿足\(slope(p_j,p_)>k\)的。單調佇列維護即可。
五、步驟:
設隊首\(head\)隊尾\(tail\)。
1、對於隊首:\(while(slope(p_,p_)
2、隊首為最優,計算\(dp[i]\)
3、隊尾:\(while(slope(p_,p_)>slope(p_,p_)) tail--\)
4、在隊尾加入\(p_i\)
六、例題
[hnoi2008]玩具裝箱 模板題。
擺渡車 列出dp方程後展開直接優化。
絲之割 先把弦轉為為二維平面上的點,去掉無用狀態後發現dp方程可以斜率優化。這裡的斜率是負數。
查稅 斜率優化 單調佇列維護凸包 分塊 )
id3167 有n個辦公室,m個操作,依次讀入 type 如果type為1 接著讀入 t k z s 表示乙個公司於t時刻進駐k辦公室,每天盈利為z,其一開始有s元。若k位置本有別的公司,別的公司會被覆蓋。如果type為2 接著讀入t b 表示於t時刻,你要找出區間 a,b 內,最有錢的公司的錢數。...
整理 斜率or單調佇列優化dp
題意 求乙個序列的子區間滿足長度大於k且所有數平均值最大 周源 裡的題。之前有人說周源講的是錯的 其實應該是沒什麼問題的 可以o n 求出 不過這題hdu上的資料不知道怎麼了 反正我在網上找的ac 們全都tle。總之 意思明白就好 反正也是入門題 include include include in...
單調佇列與斜率優化雜題
hdu3530 subsequence 給定乙個序列,求滿足 a leq max min leq b 的最長的子串行 n leq10 6 維護遞增遞減兩個單調佇列,若兩隊首之差大於 b 挪動較小左端點,並更新答案左端點 時間複雜度 o n poj1180 ioi2002 batch scheduli...