入门LIS。
#include<iostream>
using namespace std;
const int MAXN=10000+1;
struct Node
{
int s;
int e;
};
bool mymax(int a,int b)
{
if(a>b)
{
return true;
}
else
{
return false;
}
}
int main()
{
int t,n;
Node hw[MAXN];
int dp[MAXN]={0};
cin>>t>>n;
for(int i=0;i<n;i++)
{
cin>>hw[i].s;
cin>>hw[i].e;
}
for(int i=t;i>0;i--)
{
bool k=true;
int max=0;
for(int j=n-1;j>=0;j--)
{
if(hw[j].s==i)
{
k=false;
if(dp[i+hw[j].e]>max)
{
max=dp[i+hw[j].e];
}
}
}
if(!k)
{
dp[i]=max;
}
if(k)
{
dp[i]=dp[i+1]+1;
}
}
cout<<dp[1]<<endl;
return 0;
}