### 这道题不是dp吗???
```cpp
#include<bits/stdc++.h>
using namespace std;
const int maxn=1e5+10;
int n,k,sum[maxn],num=1,f[maxn];
struct node
{
long int p,t;
}a[maxn];
int cmp(node a,node b) {return a.p>b.p;}
int main()
{
scanf("%d%d",&n,&k);
for(register int i=1;i<=k;i++)
{
scanf("%d%d",&a[i].p,&a[i].t);
sum[a[i].p]++;
}
sort(a+1,a+k+1,cmp);
for(register int i=n;i>=1;i--)
{
if(sum[i]==0)
f[i]=f[i+1]+1;
else
for(register int j=1;j<=sum[i];j++)
{
if(f[i+a[num].t]>f[i])
f[i]=f[i+a[num].t];
num++;
}
}
printf("%d\n",f[1]);
}
```
by Pengtiantai @ 2019-10-27 22:46:21
shide
by Jorge_Filho @ 2020-05-11 21:39:52