將作物資訊以開始位置由小到大排序,令DP[i]是「當道路長i時,最大的總種植數」,接著跑T次,對於i等於某作物的結束位置一直到i等於M時做轉移,過程如下:
若選擇不種該作物,DP[i]不變;若選擇種植該作物,DP[i]=DP[該作物的起始位置]+該作物所需道路長度,這兩者取max
原理是只有當道路長度比某作物的結束位置長時,才能種植該作物,也就是說在道路長度短於該作物的結束位置時,都是不能種植的。當我們在決定種植某作物時,DP[該作物的起始位置]若小於先前已經種下的作物結束位置(也就是所謂的發生重疊),則會出現上一句所說道路長度短於結束位置的情形,因此先前種下的作物便不會被算進去;沒有重疊則無事發生,先前種下的照常算。簡單來說,利用DP[某作物的起始位置]便是在需要時取消種植先前種下且會重疊的作物,讓他不會被算進去。
不是很會表達><,希望需要的人看得懂我在公三小。