看似n^2暴力 其实第二个循环是1~n递增的 而且常熟极小 就跑过了

 

/**************************************************************
    Problem: 1207
    User: lxy8584099
    Language: C++
    Result: Accepted
    Time:2632 ms
    Memory:984 kb
****************************************************************/
 
/*
    f i 表示前i只 的最优情况 
*/
#include<cstdio>
using namespace std;
const int N=10500;
int n,f[N],x[N],y[N],t[N],ans;
void cmax(int&a,int b) {if(a<b) a=b;}
int abs(int x){return x>0?x:-x;}
int main()
{
    scanf("%*d%d",&n);
    for(int i=1;i<=n;i++) scanf("%d%d%d",&t[i],&x[i],&y[i]);
    f[1]=1;
    for(int i=2;i<=n;i++)
    {
        f[i]=1; 
        for(int j=1;j<i;j++) 
            if(abs(x[i]-x[j])+abs(y[i]-y[j])<=t[i]-t[j])
                cmax(f[i],f[j]+1);
        cmax(ans,f[i]);
    }
    printf("%d\n",ans);
    return 0;
}