戳這裡。
我覺的這題用到的思想還是蠻新的qaq
有的時候某個碼頭會無法裝卸貨物。這時候就必須修改運輸路線,讓貨物能夠按時到達目的地。但是修改路線是—件十分麻煩的事情,會帶來額外的成本。因此物流公司希望能夠訂乙個n天的運輸計畫,使得總成本盡可能地小。什麼意思?
難道要跑n遍最短路嗎?
很顯然是錯誤的。【藍題怎麼可能這麼水?
怎麼證明?
簡單說明一下,首先假設我們有這樣一張圖,上面有一條最短路l 和次短路 r
然後我們來假設一種情況,k=+∞
最短路能在單數時間跑,偶數時間這條路上的點有無法走到的,而次短路能在任何時間跑到。
顯然全程跑次短路要優的多。
雖然證明的很潦草,但是最起碼證明上面思路是錯誤的了qaq
那麼這道題究竟該怎麼做?
我記得之前有一道模擬賽的題目?【這篇的t2。
其中t2跟這道題基本一模一樣的操作啊!
拆掉什麼什麼的邊。
我們採取的解決方法就是----分塊
那麼這道題能不能也分塊做呢?
來嘗試嘗試吧。
既然之前那道題要求的是連通塊的個數,我們把點組分塊,那麼模擬下來,這題要求最短路,我們就把最短路分塊。
把最短路的長度分成從 i 到 j 這段時間的最短路,記rdis[i][j]表示在 i 到 j 這段時間裡能走的最短路。【這題資料範圍這麼小,當然隨便亂搞
然後,對於這種求最小值的問題,考慮二分答案?沒有範圍pass
所以嘗試dp
定義dp[i]表示從1到 i 這段時間能夠走的最短路。
那麼就可以列出方程:
dp[i] = min(dp[i] , dp[j] + rdis[j+1][i] * (i-j) +k; 【仔細想想還是蠻顯然的
這裡有乙個要注意的點:【我第一次dp列了乙個二維的就是理解錯題意了。
題面中有這樣一句話:
總成本=n天運輸路線長度之和+k*改變運輸路線的次數。k究竟是什麼?【靈魂拷問
看一張圖
究竟有幾個k?1 or 2?
答案是 2 1 啊!!!!σ(っ °д °;)っ
也就是說無論一天之內修改多少條路都是乙個**!!!!(╯' - ')╯︵┻━┻
我調了乙個小時!!!
沒好好讀題就別讀了qaq
ZJOI2006 物流運輸
description 物流公司要把一批貨物從碼頭a運到碼頭b。由於貨物量比較大,需要n天才能運完。貨物運輸過程中一般要轉停好幾個碼頭。物流公司通常會設計一條固定的運輸路線,以便對整個運輸過程實施嚴格的管理和跟蹤。由於各種因素的存在,有的時候某個碼頭會無法裝卸貨物。這時候就必須修改運輸路線,讓貨物能...
ZJOI2006 物流運輸
dp套最短路。還是蒟蒻做題少。開始想的是狀壓dp。但是因為太蒻了,不會很高效地處理一些點集的最短路,弄了乙個t飛的演算法。之後看了題解才知道原來是可以用dp套最短路做的。為什麼需要dp?因為本題涉及到狀態的選擇。每一天要麼不更換線路,要麼更換。顯然這個東西是沒有辦法貪心搞的,所以只能用dp把狀態整合...
ZJOI2006 物流運輸
物流公司要把一批貨物從碼頭a運到碼頭b。由於貨物量比較大,需要n天才能運完。貨物運輸過程中一般要轉停好幾個碼頭。物流公司通常會設計一條固定的運輸路線,以便對整個運輸過程實施嚴格的管理和跟蹤。由於各種因素的存在,有的時候某個碼頭會無法裝卸貨物。這時候就必須修改運輸路線,讓貨物能夠按時到達目的地。但是修...