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 思想過程 首先會想...