挺直白的dp
离散的是移动的过程,因为经过一番移动一定是为了出现在某个地点
所以直接m^2枚举,类似lis的转移即可
码:
#include<iostream>
#include<cstdio>
#include<algorithm>
#include<cmath>
using namespace std;
int f[10005],i,j,ans,n,m;
struct la
{
int t,x,y;
}a[10005];
bool cmp(la a,la b)
{
return a.t<b.t;
}
int main()
{
scanf("%d%d",&n,&m);
for(i=1;i<=m;i++)
scanf("%d%d%d",&a[i].t,&a[i].x,&a[i].y);
sort(a+1,a+1+n,cmp);
a[0].t=-9999;
for(i=1;i<=m;i++)
{
for(j=0;j<i;j++)
{
if(f[j]+1>f[i]&&abs(a[i].x-a[j].x)+abs(a[i].y-a[j].y)<=a[i].t-a[j].t)
{
f[i]=f[j]+1;
}
}
ans=max(ans,f[i]);
}
printf("%d",ans);
}