1003 ZJOI2006 物流運輸

2021-07-23 19:28:29 字數 2256 閱讀 5708

物流公司要把一批貨物從碼頭a運到碼頭b。由於貨物量比較大,需要n天才能運完。貨物運輸過程中一般要轉停好幾個碼頭。物流公司通常會設計一條固定的運輸路線,以便對整個運輸過程實施嚴格的管理和跟蹤。由於各種因素的存在,有的時候某個碼頭會無法裝卸貨物。這時候就必須修改運輸路線,讓貨物能夠按時到達目的地。但是修改路線是一件十分麻煩的事情,會帶來額外的成本。因此物流公司希望能夠訂乙個n天的運輸計畫,使得總成本盡可能地小。

第一行是四個整數n(1<=n<=100)m(1<=m<=20)、k和e。n表示貨物運輸所需天數,m表示碼頭總數,k表示每次修改運輸路線所需成本。接下來e行每行是一條航線描述,包括了三個整數,依次表示航線連線的兩個碼頭編號以及航線長度(>0)。其中碼頭a編號為1,碼頭b編號為m。單位長度的運輸費用為1。航線是雙向的。再接下來一行是乙個整數d,後面的d行每行是三個整數p( 1 < p < m)、a、b(1< = a < = b < = n)。表示編號為p的碼頭從第a天到第b天無法裝卸貨物(含頭尾)。同乙個碼頭有可能在多個時間段內不可用。但任何時間都存在至少一條從碼頭a到碼頭b的運輸路線。

包括了乙個整數表示最小的總成本。總成本=n天運輸路線長度之和+k*改變運輸路線的次數。

5 5 10 8

1 2 1

1 3 3

1 4 2

2 3 2

2 4 4

3 4 1

3 5 2

4 5 2

42 2 3

3 1 1

3 3 3

4 4 5

32
圖上的dp(不過只有20個點(笑),因為每天走的過程中是不會變更路線的整個1-n天可以看成1-i天走一條路,i-j天走一條路,j-k天走一條路……我們處理出 dis[i][j] 為第 i 天到第 j 天一直走一條路的花費,f[i] 為前 i 天的花費,由此得 f[i] = max(f[i] , f[j] + dis[j+1][i]+k);,注意的地方,j 要從 0 開始列舉,相當於從一開始一直走一條路;因為一開始走是不需要消耗k的,而在方程裡一併當做了修改路線計算,所以答案要減去 k 。

**如下

#include

#include

#include

#include

#include

#define ll long long

using

namespace

std;

const

int size = 200010;

int head[size],next[size];

ll dist[size];

ll dis[450][450];

ll f[20010];

struct g***

l[size],untr[size];

int tot = 1;

void build(int f,int t,int d)

ll n,m,kk,e,d;

queue

< int > q;

bool use[450];

bool vis[450];

bool usef[2000][450];

void spfa(int s)}}

}}int main()

scanf("%d",&d);

for(int i = 1 ; i <= d ; i ++)

for(int i = 1 ; i <= n ; i ++)

for(int j = i ; j <= n ; j ++)

}spfa(1);

if(dist[m] == 214748364132154527ll)

dis[i][j] = dist[m];

else

dis[i][j] = dist[m] * (j - i + 1);

// printf("i %d j %d dis_ij %d\n",i,j,dis[i][j]);

}for(int i = 1 ; i <= n ; i ++)

printf("%lld\n",f[n]-kk);

return0;}

/*5 5 10 8

1 2 1

1 3 3

1 4 2

2 3 2

2 4 4

3 4 1

3 5 2

4 5 2

42 2 3

3 1 1

3 3 3

4 4 5

*/

1003 ZJOI2006 物流運輸

題目鏈結 題目大意 把一批貨物從碼頭a運到碼頭b,需要n天才能運完。由於各種因素的存在,有的時候某個碼頭會無法裝卸貨物。這時候就必須修改運輸路線,讓貨物能夠按時到達目的地。修改計畫需要一定的費用。制定乙個n天的運輸計畫,使得總成本盡可能地小。題解 看上去比較難 暴力dp就行了。按照天數劃分狀態,用f...

BZOJ1003 ZJOI2006 物流運輸

time limit 10 sec memory limit 162 mb submit 6148 solved 2522 submit status discuss 物流公司要把一批貨物從碼頭a運到碼頭b。由於貨物量比較大,需要n天才能運完。貨物運輸過程中一般要轉 停好幾個碼頭。物流公司通常會設計...

bzoj 1003 zjoi2006 物流運輸

好吧。我坦白。因為題意有點很多地方不了解查了tijie description 物流公司要把一批貨物從碼頭a運到碼頭b。由於貨物量比較大,需要n天才能運完。貨物運輸過程中一般要轉 停好幾個碼頭。物流公司通常會設計一條固定的運輸路線,以便對整個運輸過程實施嚴格的管理和跟蹤。由於各種 因素的存在,有的時...