凸殼上的單調佇列 斜率優化

2022-07-21 01:00:28 字數 617 閱讀 6437

一、性質:一種動態規劃的優化。

二、前置: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...