BZOJ 1096 ZJOI2007 倉庫建設

2022-05-22 02:24:09 字數 1006 閱讀 4497

【鏈結】

鏈結【題意】

在這裡輸入題意

【題解】

設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...