P1280 尼克的任務

2021-09-14 07:37:19 字數 740 閱讀 7757

這個題雖然知道是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分鐘結束。當尼克到達單位後他就開始幹活。如果在同一時刻有多個任務需要完戍,尼克可以任選其中的乙個來做,而其...