動態(tài)規(guī)劃的方程大家都知道,就是
f[i,j]=min{f[i-1,j-1],f[i-1,j],f[i,j-1],f[i,j+1]}+a[i,j]
但是很多人會懷疑這道題的后效性而放棄動規(guī)做法。
本來我還想做Dijkstra,后來變了沒二十行pascal就告訴我數(shù)組越界了……(dist:array[1..1000*1001
div 2]...)
無奈之余看了xj_kidb1的題解,剛開始還覺得有問題,后來豁然開朗……
反復(fù)動規(guī)。上山容易下山難,我們可以從上往下走,最后輸出f[n][1]。
xj_kidb1的一個技巧很重要,每次令f[i][0]=f[i][i],f[i][i+1]=f[i][1](xj_kidb1的題解還寫錯了)
標(biāo)簽:
動態(tài)規(guī)劃
方程
家
上傳時間:
2014-07-16
上傳用戶:libinxny
兩臺處理機(jī)A 和B處理n個作業(yè)。設(shè)第i個作業(yè)交給機(jī)器
A 處理時需要時間ai,若由機(jī)器B 來處理,則需要時間bi。由于各作
業(yè)的特點和機(jī)器的性能關(guān)系,很可能對于某些i,有ai >=bi,而對于
某些j,j!=i,有aj<bj。既不能將一個作業(yè)分開由兩臺機(jī)器處理,也沒
有一臺機(jī)器能同時處理2 個作業(yè)。設(shè)計一個動態(tài)規(guī)劃算法,使得這兩
臺機(jī)器處理完成這n 個作業(yè)的時間最短(從任何一臺機(jī)器開工到最后
一臺機(jī)器停工的總時間)。研究一個實例:(a1,a2,a3,a4,a5,a6)=
(2,5,7,10,5,2);(b1,b2,b3,b4,b5,b6)=(3,8,4,11,3,4)
標(biāo)簽:
處理機(jī)
機(jī)器
上傳時間:
2014-01-14
上傳用戶:獨(dú)孤求源