戳這裏。html
我覺的這題用到的思想仍是蠻新的QAQspa
有的時候某個碼頭會沒法裝卸貨物。這時候就必須修改運輸路線,讓貨物可以按時到達目的地。可是修改路線是—件十分麻煩的事情,會帶來額外的成本。所以物流公司但願可以訂一個n天的運輸計劃,使得總成本儘量地小。htm
什麼意思?blog
難道要跑n遍最短路嗎?get
很顯然是錯誤的。【藍題怎麼可能這麼水?io
怎麼證實?方法
簡單說明一下,首先假設咱們有這樣一張圖,上面有一條最短路 L 和次短路 Rim
而後咱們來假設一種狀況,k=+∞ 數據
最短路能在單數時間跑,偶數時間這條路上的點有沒法走到的,而次短路能在任什麼時候間跑到。img
顯然全程跑次短路要優的多。
雖然證實的很潦草,可是最起碼證實上面思路是錯誤的了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