P1267 尼克的任务
2017年8月2日
一维动态规划
#include<iostream>
#include<cstdio>
#include<algorithm>
#include<cstring>
using namespace std;
int N, K;
struct Work{
int st, ed, L;
}F[11000];
int T[11000];
bool cmp(Work a, Work b) {return (a.st < b.st);}
void Putin()
{
cin >> N >> K;
for(int i = 1; i <= K; i++){
cin >> F[i].st >> F[i].L;
F[i].ed = F[i].st + F[i].L - 1;
}
memset(T, 0, sizeof(T));
sort(F + 1, F + 1 + K, cmp);
}
int main()
{
Putin();
int ans = K;
for(int i = N; i >= 1; i--)
{
if(F[ans].st != i)
T[i] = T[i + 1] + 1;
else
while(F[ans].st == i){
T[i] = max(T[i], T[F[ans].ed + 1]);
ans--;
}
}
cout << T[1] << endl;
return 0;
}