10000的数据,常数比较小,n^2能过
设前i个鼹鼠中我们所能打死的最多鼹鼠是f[i]个,状态转移方程就是f[i]=max{f[i],f[j]+1};要保证
abs(x[i]-x[j])+abs(y[i]-y[j])<=time[i]-time[j] (j<i)从j点到i点的距离要小于相差的时间,就是要从这个在时间之内保证能到另一个点
#include<cstdio>
#include<cstring>
#include<cstdlib>
#include<cmath>
#include<algorithm>
using namespace std;
int n,m,ti[15005],x[15005],y[15005];
int f[15005];
int main()
{
scanf("%d%d",&n,&m);
int ans=0;
for (int i=1;i<=m;i++)
{
scanf("%d%d%d",&ti[i],&x[i],&y[i]);
f[i]=1;
for (int j=1;j<i/*&&ti[j]!=ti[i]*/;j++)
if (abs(x[i]-x[j])+abs(y[i]-y[j])<=ti[i]-ti[j])
f[i]=max(f[j]+1,f[i]);
ans=max(ans,f[i]);
}
printf("%d",ans);
return 0;
}