ZJOI2007 倉庫建設

2022-05-05 17:33:11 字數 1037 閱讀 6223

傳送門

考慮用dp[i]表示把前i個地點的物品全部安置好的最小花費。因為物品只能往下運,所以當前這個位置必須建倉庫,dp方程很好想:

\[dp[i] = min_^\^ p[k] * (x[i] - x[k])\} + c[i]

\]用\(sum[n]\)表示\(\sum_^np[i]\),\(ssum[n]\)表示\(\sum_^np[i] * x[i]\)

之後把式子變個型套斜率優化就好了。得到:

\(\frac < x[i]\)時,q比p優。

因為這個x[i]是單調遞增的,所以不用考慮特別多,套斜率優化即可。

#include#include#include#include#include#include#define rep(i,a,n) for(int i = a;i <= n;i++)

#define per(i,n,a) for(int i = n;i >= a;i--)

#define enter putchar('\n')

#define pr pair#define mp make_pair

#define fi first

#define sc second

using namespace std;

typedef long long ll;

const int m = 1000005;

const int n = 10000005;

ll read()

while(ch >='0' && ch <= '9') ans = ans * 10 + ch - '0',ch = getchar();

return ans * op;

}struct node

a[m];

ll sum[m],ssum[m],dp[m],n,q[m],head,tail;

double slope(ll p,ll q)

int main()

printf("%lld\n",dp[n]);

return 0;

}

ZJOI2007 倉庫建設

l公司有n個工廠,由高到底分布在一座山上。如圖所示,工廠1在山頂,工廠n在山腳。由於這座山處於高原內陸地區 乾燥少雨 l公司一般把產品直接堆放在露天,以節省費用。突然有一天,l公司的總裁l先生接到氣象部門的 被告知三天之後將有一場暴雨,於是l先生決定緊急在某些工廠建立一些倉庫以免產品被淋壞。由於地形...

ZJOI 2007 倉庫建設

注意到我們所有的東西都只能轉移到後面,那麼可以考慮dp 用dp i 表示以i結尾建立倉庫的最小花費 那麼dp i min dp i dp j w i sigma dis i dis k num k 這個dp直接轉移是n 2 考慮優化這個dp 然後他是由前面所有的轉移過來,而且還有其他的陣列來計算答案...

ZJOI 2007 倉庫建設

這道題不算很難,這裡我提供兩種做法。設 dp i 為在 i 位上設定倉庫,前面工廠都解決了的最小花費。首先我們可以列出 dp 式 dp i min dp j sigma p k x i x k c i 即 dp i min dp j x i sigma p k sigma p k x k c i 我...