題目問的是最大空暇時間,那麼就定義dp[i]為第i分鐘的最大空暇時間,顯然滿足最優子結構,我們發現dp[i]僅與其後的值有關,那麼從後往前推,如果第i分鐘沒有任務,dp[i]=dp[i+1],如果有任務,就遍歷所有任務 dp[i]=max
#include #include #include #include #include #include using namespace std;
int read()
while(c>='0'&&c<='9')
return rv*fh;
}vector t[10005];
int n,k,dp[10005];
int main()
/*for(int i=1;i<=n;i++)*/
for(int i=n;i>=1;i--)
}else dp[i]=dp[i+1]+1;
} cout
return 0;
}
洛谷P1280 尼克的任務
一道比較另類的dp,一開始沒想出來,覺得應該不用dp搞就能出來,然後看了題解發現原來這麼簡單。dp i 表示從i開始的最大空閒時間,逆序推dp,分情況 1 如果改時間沒有工作需要開始,那麼當然是要休息的,表示現在休息一分鐘,dp i dp i 1 1 2 如果有需要開始的,那麼在所有需要開始的工作中...
洛谷 P1280 尼克的任務
題目描述 尼克每天上班之前都連線上英特網,接收他的上司發來的郵件,這些郵件包含了尼克主管的部門當天要完成的全部任務,每個任務由乙個開始時刻與乙個持續時間構成。尼克的乙個工作日為n分鐘,從第一分鐘開始到第n分鐘結束。當尼克到達單位後他就開始幹活。如果在同一時刻有多個任務需要完戍,尼克可以任選其中的乙個...
洛谷P1280 尼克的任務
題目描述 尼克每天上班之前都連線上英特網,接收他的上司發來的郵件,這些郵件包含了尼克主管的部門當天要完成的全部任務,每個任務由乙個開始時刻與乙個持續時間構成。尼克的乙個工作日為n分鐘,從第一分鐘開始到第n分鐘結束。當尼克到達單位後他就開始幹活。如果在同一時刻有多個任務需要完戍,尼克可以任選其中的乙個...