【链接】
bzoj1207
【解题报告】
裸的最长升。
博主太懒,就打O(m^2)的解法了
#include<cstdio>
#include<algorithm>
using namespace std;
const int maxn=10005;
int n,m,ans,f[maxn];
struct Point
{
int x,y,t;
}a[maxn];
int Abs(int x) {if (x<0) return (-x); return x;}
int main()
{
freopen("1207.in","r",stdin);
freopen("1207.out","w",stdout);
scanf("%d%d",&n,&m); ans=0;
for (int i=1; i<=m; i++) scanf("%d%d%d",&a[i].t,&a[i].x,&a[i].y),f[i]=1;
for (int i=1; i<=m; i++)
for (int j=1; j<i; j++)
if (Abs(a[i].x-a[j].x)+Abs(a[i].y-a[j].y)<=a[i].t-a[j].t&&f[j]+1>f[i]) f[i]=f[j]+1;
for (int i=1; i<=m; i++) ans=max(ans,f[i]);
printf("%d",ans);
return 0;
}