$dp_i$ 表示在 $i$ 處建乙個倉庫之後的最小花費。
轉移方程為
$dp_i = \min \^p_k\times(x_i-x_k)+c_i\}=\min \^p_k-\sum\limits_^ p_kx_k+c_i\}$
設 $g_i=-\sum \limits_^i p_jx_j$,$p_i$ 變成字首和。
轉移方程變成 $dp_i=\min\-p_)+g_-g_j+c_i\}$,就可以斜率優化了,斜率是 $p_$ 保證遞增,那麼就有決策單調性,用雙端佇列即可。
#include #define ll long longview codeusing
namespace
std;
namespace
io
while (ch >= '
0' && ch <= '
9')
x *=f;
}} using
namespace
io;const
int n = 1e6 + 7
;ll x[n], p[n], c[n], g[n], dp[n];
intque[n];
inline ll x(
inti)
inline ll y(
inti)
inline
double k(int i, int
j) int
main()
int l = 1, r = 1
;
for (int i = 1; i <= n; i++)
printf(
"%lld\n
", dp[n]);
return0;
}
bzoj 1096 ZJOI2007 倉庫建設
time limit 10 sec memory limit 162 mb submit 3607 solved 1582 submit status discuss l公司有n個工廠,由高到底分布在一座山上。如圖所示,工廠1在山頂,工廠n在山腳。由於這座山處於高原內 陸地區 乾燥少雨 l公司一般把...
bzoj 1096 ZJOI2007 倉庫建設
l公司有n個工廠,由高到底分布在一座山上。如圖所示,工廠1在山頂,工廠n在山腳。由於這座山處於高原內陸地區 乾燥少雨 l公司一般把產品直接堆放在露天,以節省費用。突然有一天,l公司的總裁l先生接到氣象部門的 被告知三天之後將有一場暴雨,於是l先生決定緊急在某些工廠建立一些倉庫以免產品被淋壞。由於地形...
bzoj1096 ZJOI2007 倉庫建設
1a系列。用f i 表示在 i 這個點建立倉庫的,前i個工廠的貨物都能藏起來的最小費用。顯然f i c i min w j,i f j 其中 w j,i 表示把 j i 的貨物都運到 i 的費用 w j,i k j 1i p k x i x k x i k j 1ip k k j 1ip k x k...