動規之 尼克的任務

2021-10-06 05:47:48 字數 1174 閱讀 1579

題目描述

尼克每天上班之前都連線上英特網,接收他的上司發來的郵件,這些郵件包含了尼克主管的部門當天要完成的全部任務,每個任務由乙個開始時刻與乙個持續時間構成。

尼克的乙個工作日為 n 分鐘,從第 1 分鐘開始到第 n 分鐘結束。當尼克到達單位後他就開始幹活,公司一共有 k 個任務需要完成。如果在同一時刻有多個任務需要完成,尼克可以任選其中的乙個來做,而其餘的則由他的同事完成,反之如果只有乙個任務,則該任務必需由尼克去完成,假如某些任務開始時刻尼克正在工作,則這些任務也由尼克的同事完成。如果某任務於第 p 分鐘開始,持續時間為 t 分鐘,則該任務將在第 (p+t-1) 分鐘結束。

寫乙個程式計算尼克應該如何選取任務,才能獲得最大的空暇時間。

輸入格式

輸入資料第一行含兩個用空格隔開的整數 n 和 k。

接下來共有 k 行,每一行有兩個用空格隔開的整數 p 和 t,表示該任務從第 p 分鐘開始,持續時間為 t 分鐘。

輸出格式

輸出檔案僅一行,包含乙個整數,表示尼克可能獲得的最大空暇時間。

輸入

1561

2164

11858

1115

輸出

4
說明/提示

資料規模與約定

對於100% 的資料,保證 1≤n≤10^4,1≤k≤10 ^4,1≤p≤n,1≤p+t−1≤n。

f[i]為第i分鐘開始做任務時的最大休息時間

如果第i分鐘空閒,則

f[i]=f[i+1]+1,

否則f[i]=在所有第i分鐘開始工作時max(f[i],e[i][j])

**如下:

#include

#include

using namespace std;

int n,k,p,t;

int f[

10001];

vector<

int>e[

10001];

intmain()

for(

int i=n;i>

0;i--)}

else

f[i]

=f[i+1]

+1;}

cout <;return0;

}

尼克的任務(座標型動規)

description 尼克每天上班之前都連線上英特網,接收他的上司發來的郵件,這些郵件包含了尼克主管的部門當天要完成的全部任務,每個任務由乙個開始時刻與乙個持續時間構成。尼克的乙個工作日為 n 分鐘,從第一分鐘開始到第 n 分鐘結束。當尼克到達單位後他就開始幹活。如果在同一時刻有多個任務需要完戍,...

LuoGu P1280 尼克的任務 線性動規

尼克每天上班之前都連線上英特網,接收他的上司發來的郵件,這些郵件包含了尼克主管的部門當天要完成的全部任務,每個任務由乙個開始時刻與乙個持續時間構成。尼克的乙個工作日為n分鐘,從第一分鐘開始到第n分鐘結束。當尼克到達單位後他就開始幹活。如果在同一時刻有多個任務需要完成,尼克可以任選其中的乙個來做,而其...

動規之 租用遊艇

題目描述 長江遊艇俱樂部在長江上設定了 n 個遊艇出租站 1,2,n。遊客可在這些遊艇出租站租用遊艇,並在下游的任何乙個遊艇出租站歸還遊艇。遊艇出租站 i 到遊艇出租站 j 之間的租金為 r i,j 1 i輸入格式 第一行中有乙個正整數 n,表示有 n 個遊艇出租站。接下來的 n 1 行是乙個半矩陣...