UOJ 592 投放點的選擇

2022-08-23 23:36:20 字數 1027 閱讀 2486

zl王國有一條母親河,沿河有n個農莊,zl王國的農產品都是出產自這n個農莊。為了抵制黑心的農販子,這次zl國王決定由王國統一收購,並給出了讓農戶非常滿意的**,甚至國王還下旨運輸路費王國報銷。這n個農莊主非常高興,決定滿載貨船趕往收購點。

可是王國的國庫空虛,勉強夠收購農產品,至於建臨時收購點和報銷運輸費的錢……

zl國王拿出了自己的私房錢,含淚對著你說:「萬能的ioer,請你幫我算算選擇哪些農莊建立收購點,可以讓我出最少的錢。」

zl國王遞給你乙個**,上面記錄了,相鄰農莊運輸的費用以及在不同農莊建立臨時收購點的費用。

簡易題面:n個農莊(1~n)在一條線上,依次給定相鄰農莊間運輸費用和在不同農莊建立臨時收購點的費用,總費用即每個農莊前往運輸費用最少的收購點和所有收購點建立費用之和。)

第一行包含1 個正整數n。

第二行包含n 個自然數,依次表示n個農莊建立收購點的代價cost。

以下n-1 行每行乙個整數w,依次表示在農莊i和i+1間運輸費用w。

輸出1 個整數,表示最小代價。

8

1 3 3 8 5 5 4 431

9998

0

27
樣例中在1、2、4、5、6、7建立收購點。

30%的資料:n≤10;

70%的資料:n≤500;

100%的資料:1≤n≤5000;0≤w,cost≤5000;

**

#include#include#include#include#includeusing namespace std;

const int n=5010,oo=1e9;

long long f[n],ans;

int cost[n],d[n][n],n;

int main ()

for(int i=1; i0; t+=d[--i][n])

if(f[i]+tans=f[i]+t;

printf("%lld\n",ans);

return 0;

}