動態規劃:設 f [ i ] 表示第 i 個任務開始時,可獲得的最大空閒時間。
轉移方程:
① 若此時無任務:f [ i ] = max( f [ i ] , f [ i-1 ]+1 )。
② 若此時有任務:f [ i+wj-1 ] = max( f [ i+wj-1 ] , f [ i-1 ] )。
注:有任務時,用 j 列舉開始的時間為 i 的任務,提前更新掉第 j 個任務結束的時間 i+wj-1 的 f [ i+wj-1 ]。
#include#include#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
using
namespace
std;
#define max(a,b) ((a)>(b)?(a):(b))
#define min(a,b) ((a)<(b)?(a):(b))
#define maxn 10001
#define inf -0x3ftypedef
long
long
ll;ll n,k;
ll f[maxn];
struct
hht[maxn];
inline ll read()
while
(isdigit(ls))
return xs*kr;
}int
main()
}printf(
"%lld\n
",f[n]);
return0;
}
P1280 尼克的任務
題目描述 尼克每天上班之前都連線上英特網,接收他的上司發來的郵件,這些郵件包含了尼克主管的部門當天要完成的全部任務,每個任務由乙個開始時刻與乙個持續時間構成。尼克的乙個工作日為n分鐘,從第一分鐘開始到第n分鐘結束。當尼克到達單位後他就開始幹活。如果在同一時刻有多個任務需要完戍,尼克可以任選其中的乙個...
P1280 尼克的任務
題目描述 尼克每天上班之前都連線上英特網,接收他的上司發來的郵件,這些郵件包含了尼克主管的部門當天要完成的全部任務,每個任務由乙個開始時刻與乙個持續時間構成。尼克的乙個工作日為n分鐘,從第一分鐘開始到第n分鐘結束。當尼克到達單位後他就開始幹活。如果在同一時刻有多個任務需要完成,尼克可以任選其中的乙個...
P1280 尼克的任務
尼克每天上班之前都連線上英特網,接收他的上司發來的郵件,這些郵件包含了尼克主管的部門當天要完成的全部任務,每個任務由乙個開始時刻與乙個持續時間構成。尼克的乙個工作日為n分鐘,從第一分鐘開始到第n分鐘結束。當尼克到達單位後他就開始幹活。如果在同一時刻有多個任務需要完戍,尼克可以任選其中的乙個來做,而其...