奇妙的dp。。
f[i]:=打掉i的时候已经打掉了多少
![](https://i-blog.csdnimg.cn/blog_migrate/8f900a89c6347c561fdf2122f13be562.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/961ddebeb323a10fe0623af514929fc1.gif)
1 #include <iostream> 2 #include <algorithm> 3 #include <cstdio> 4 #include <cstring> 5 #include <cstdlib> 6 using namespace std; 7 8 int n,m,t[10010],x[10010],y[10010],ans=1,f[10010]; 9 10 int main(){ 11 scanf("%d%d",&n,&m); 12 for(int i=0;i<m;i++)scanf("%d%d%d",&t[i],&x[i],&y[i]),f[i]=1; 13 for(int i=0;i<m;i++)for(int j=0;j<i;j++)ans=max(ans,(f[i]=max((abs(x[i]-x[j])+abs(y[i]-y[j])<=t[i]-t[j])*(f[j]+1),f[i]))); 14 printf("%d\n",ans); 15 }