題解P1772 ZJOI2006 物流運輸

2022-06-20 20:18:14 字數 827 閱讀 6136

p1772 [zjoi2006]物流運輸

看完這道題,很容易想到需要用最短路,但是只用最短路顯然是不行的,因為運輸路線不止一條,

所以如果每一天都選擇最短的路線答案可能並不是最優,所以這時候就需要考慮dp,

剛開始我想的是用狀態壓縮把所有可能的路線算出來,但很快就被我否決了,因為時間複雜度顯然超了,所以考慮其他方法

觀察樣例得出,有可能一段時間內的最短路是一樣的,所以考慮定義乙個陣列\(dis_\)表示第\(i\)天到第\(j\)天都可以走的最短的路線,

然後就可以定義狀態\(f_i\)表示前\(i\)天的最短花費,考慮將n天劃分成若干段進行轉移即可

得出狀態轉移方程

\(f_i=\min\limits_

int dij(int x, int y)//最短路

); }}}

return dist[m];

}int main()

int d;

scanf("%d", &d);

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

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

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

dis[i][j] = dij(i, j);

f[0] = -k;

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

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

f[i] = min(f[i], f[j] + (i - j) * dis[j + 1][i] + k);

printf("%d", f[n]);

}

P1772 ZJOI2006 物流運輸

物流公司要把一批貨物從碼頭a運到碼頭b。由於貨物量比較大,需要n天才能運完。貨物運輸過程中一般要轉停好幾個碼頭。物流公司通常會設計一條固定的運輸路線,以便對整個運輸過程實施嚴格的管理和跟蹤。由於各種因素的存在,有的時候某個碼頭會無法裝卸貨物。這時候就必須修改運輸路線,讓貨物能夠按時到達目的地。但是修...

P1772 ZJOI2006 物流運輸

物流公司要把一批貨物從碼頭a運到碼頭b。由於貨物量比較大,需要n天才能運完。貨物運輸過程中一般要轉停好幾個碼頭。物流公司通常會設計一條固定的運輸路線,以便對整個運輸過程實施嚴格的管理和跟蹤。由於各種因素的存在,有的時候某個碼頭會無法裝卸貨物。這時候就必須修改運輸路線,讓貨物能夠按時到達目的地。但是修...

洛谷P1772 ZJOI2006 物流運輸

這道題是相當的火,但是在tyher的講解下我一遍就ac了!part 1 理解題目 從第一天到最後一天,總會有一些點莫名其妙地走不了,所以導致我們不能按照上一次的最短路一直運輸得到最少費用,而需要不停地更換航線來保證可以運到終點,答案就是在這些方案中選出運輸費用最少的。part 2 思想過程 首先會想...