這個題雖然知道是dp,但是剛剛開始,思路尚不明確。
1.首先,這個題應該是從後往前推。因為如果你選擇了一項任務,你現在的狀態是從未來的時刻轉移回來的。換句話說,你不能在這個時刻選擇這個時刻已經結束的工作。因此,應該從後往前推。
2.如果從後往前推,那麼就需要已知初始時刻在dp[n]的值。所以,讓dp[i]代表從i~n中間的空餘時間。dp[n]=0
3.其餘的,例如線段覆蓋的排序問題用結構體寫並排序,用乙個mis_now儲存此時的任務個數,用num儲存已經遍歷到的任務個數(因為已經排序,所以遍歷也是從rw陣列1~k遍歷)。細節問題
#include
#define mxn 10005
using namespace std;
int dp[mxn]
=,mis_now[mxn]=;
struct mis
;mis rw[mxn]
;bool cmp
(mis a,mis b)
else
}int
main
(void
)sort
(rw+
1,rw+k+
1,cmp)
;int num=1;
for(
int i=n;i>=
1;i--
)else}}
printf
("%d"
,dp[1]
);}
P1280 尼克的任務
題目描述 尼克每天上班之前都連線上英特網,接收他的上司發來的郵件,這些郵件包含了尼克主管的部門當天要完成的全部任務,每個任務由乙個開始時刻與乙個持續時間構成。尼克的乙個工作日為n分鐘,從第一分鐘開始到第n分鐘結束。當尼克到達單位後他就開始幹活。如果在同一時刻有多個任務需要完戍,尼克可以任選其中的乙個...
P1280 尼克的任務
題目描述 尼克每天上班之前都連線上英特網,接收他的上司發來的郵件,這些郵件包含了尼克主管的部門當天要完成的全部任務,每個任務由乙個開始時刻與乙個持續時間構成。尼克的乙個工作日為n分鐘,從第一分鐘開始到第n分鐘結束。當尼克到達單位後他就開始幹活。如果在同一時刻有多個任務需要完成,尼克可以任選其中的乙個...
P1280 尼克的任務
尼克每天上班之前都連線上英特網,接收他的上司發來的郵件,這些郵件包含了尼克主管的部門當天要完成的全部任務,每個任務由乙個開始時刻與乙個持續時間構成。尼克的乙個工作日為n分鐘,從第一分鐘開始到第n分鐘結束。當尼克到達單位後他就開始幹活。如果在同一時刻有多個任務需要完戍,尼克可以任選其中的乙個來做,而其...