這道題應該要倒推來做dp。
別人說順推也可以,但我又不會刷表啊!剛才刷了一遍全部wa。
那我們就乖乖地倒推。
我一開始想定義狀態的時候就錯了。只需要定義\(dp[i]\)一維就可以了,因為這些任務一定會被做。
我們考慮的有兩種決策:
發現這些任務可能是亂的,所以我們可以排序。
很重要的一點:定義乙個num變數,表示當前已經做了num個任務。
然後我們就按照遞推思路寫dp即可。詳情看**:
#include#includeconst int maxn = 10005;
struct nodes
s[maxn];
int dp[maxn];
int sum[maxn];
int num = 1;//
int n, m;
bool cmp(const nodes a, const nodes b)
int main()
std::sort(s + 1, s + 1 + m, cmp);
for(int i = n; i >= 1; i--)}}
printf("%d\n", dp[1]);
return 0;
}
P1280 尼克的任務
題目描述 尼克每天上班之前都連線上英特網,接收他的上司發來的郵件,這些郵件包含了尼克主管的部門當天要完成的全部任務,每個任務由乙個開始時刻與乙個持續時間構成。尼克的乙個工作日為n分鐘,從第一分鐘開始到第n分鐘結束。當尼克到達單位後他就開始幹活。如果在同一時刻有多個任務需要完戍,尼克可以任選其中的乙個...
P1280 尼克的任務
題目描述 尼克每天上班之前都連線上英特網,接收他的上司發來的郵件,這些郵件包含了尼克主管的部門當天要完成的全部任務,每個任務由乙個開始時刻與乙個持續時間構成。尼克的乙個工作日為n分鐘,從第一分鐘開始到第n分鐘結束。當尼克到達單位後他就開始幹活。如果在同一時刻有多個任務需要完成,尼克可以任選其中的乙個...
P1280 尼克的任務
尼克每天上班之前都連線上英特網,接收他的上司發來的郵件,這些郵件包含了尼克主管的部門當天要完成的全部任務,每個任務由乙個開始時刻與乙個持續時間構成。尼克的乙個工作日為n分鐘,從第一分鐘開始到第n分鐘結束。當尼克到達單位後他就開始幹活。如果在同一時刻有多個任務需要完戍,尼克可以任選其中的乙個來做,而其...