【鏈結】
鏈結【題意】
在這裡輸入題意
【題解】
設f[i]表示在第i個地方設立乙個倉庫,且前面符合要求的最小花費。
則$f[i] = min(f[j] + c[i] + dis[i]*(sump[i] - sump[j])-(sumdp[i]-sumdp[j]));$
其中sump是p的字首和,即$sump[i] = p[1]+p[2]+..+p[i]$
sumdp是x*p的字首和,即$sumdp[i] = x[1]*p[1]+x[2]*p[2]+...+x[i]*p[i]$
這個表示j+1..i這一段的所有物品都運輸到i這個倉庫。
自己用筆寫一下就知道了。
顯然是個n^2演算法。
斜率優化。
設x< y,且y優於x.
balabala就能得到
$\frac< dis[i]$
又dis是單調遞增的。
這是乙個經典的斜率優化問題了。
【錯的次數】
在這裡輸入錯的次數
【反思】
在這裡輸入反思
【**】
#include #define ll long long
using namespace std;
const int n = 1e6;
int n,dl[n+10],h,t;
ll dis[n+10],p[n+10],c[n+10],sump[n+10],sumdp[n+10];
ll dp[n+10];
double ju(int x,int y)
int main()
for (int i = 1;i <= n;i++) dp[i] = 1e18;
h = 1,t = 1;
dl[1] = 0;
for (int i = 1;i <= n;i++)
printf("%lld\n",dp[n]);
return 0;
}
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...