設a(x),b(x),c(x),d(x)為僅關於x的一元函式
dp[i]=a(i)+b(j)中的最小/大值 (i-k<=j
dp[i]=dp[j]+(i-j)*w // 選自hdu3401
a(i)=i*w
b(j)=dp[j]-j*w
維護b(j)的最大合法值進行轉移即可
建立一層迴圈i=1~n
每次先用i-k更新單調佇列隊頭位置,然後用單調佇列中的最值點更新dp[i],最後將b(i)加入單調佇列
struct dddl//單調佇列
void eliminate(int minp)
long long kx(int a,int b)
void dynamic_programming()//以取最小值為例
}
整理 斜率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...
LA 4726 斜率優化 單調佇列
題意 給定乙個01序列,選乙個長度至少為l 的連續子串行使其平均值最大 輸出這個子串行的起點和終點 如果有多個答案,輸出長度最小的,還有多個就輸出第乙個編號最小的 思路 用sum i 表示 1,i 的和 題目的平均值就可以變成 sum i sum j 1 i j 1 問題也變成求橫座標的距離至少為l...