該模板的ai要具有單調性,也就是sum陣列(若沒有單調性,加個二分即可)
我的一篇題解,很詳細
1、寫出狀態轉移方程
2、按照斜率優化的式子推導出式子
3、代入模板即可。
#include
#include
using
namespace std;
typedef
long
long ll;
const
int maxn =
5e5+10;
ll a[maxn]
;ll sum[maxn]
;ll dp[maxn]
;ll que[maxn]
;ll get_up
(int u,
int v)
///y
ll get_down
(int u,
int v)
///x
intmain()
int l =
1, r =1;
for(
int i =
1; i <= n; i++
)printf
("%lld\n"
, dp[n]);
}return0;
}
一篇寫的很詳細很好的部落格 斜率優化 DP
我們知道,有些dp方程可以轉化成dp i f j x i 的形式,其中f j 中儲存了只與j相關的量。這樣的dp方程我們可以用單調佇列進行優化,從而使得o n 2 的複雜度降到o n 可是並不是所有的方程都可以轉化成上面的形式,舉個例子 dp i dp j x i x j x i x j 如果把右邊...
dp斜率優化
我們知道,有些dp方程可以轉化成dp i f j x i 的形式,其中f j 中儲存了只與j相關的量。這樣的dp方程我們可以用單調佇列進行優化,從而使得o n 2 的複雜度降到o n 可是並不是所有的方程都可以轉化成上面的形式,舉個例子 dp i dp j x i x j x i x j 如果把右邊...
斜率優化DP
斜率優化主要解決的是轉移方程中存在乙個同時與i和j有關的部分時的優化問題 dp i min dp j a i b j 0 include using namespace std typedef long long ll const int maxn 1e5 5 ll a maxn b maxn dp...