bzoj1207 [HNOI2004]打鼹鼠——LIS

时间:2023-03-09 15:37:45
bzoj1207 [HNOI2004]打鼹鼠——LIS

题目:https://www.lydsy.com/JudgeOnline/problem.php?id=1207

这题和求LIS有点像,打这一只鼹鼠一定可以从打上一只鼹鼠转移过来;

所以不用考虑机器人移动啦、格子边界啦等等问题;

注意状态不能是“打前i只鼹鼠”而必须是“打第i只鼹鼠及以前”,这样每个状态都固定在它所表示的那一只鼹鼠上,才可以转移。

代码如下:

#include<iostream>
#include<cstdio>
#include<cstring>
#include<cmath>
#include<cstdlib>
using namespace std;
int const maxn=;
int n,m,tim[maxn],x[maxn],y[maxn],f[maxn],ans;
bool pd(int i,int j)
{
int t=tim[j]-tim[i];
int s=abs(y[j]-y[i])+abs(x[j]-x[i]);
return s<=t;
}
int main()
{
scanf("%d%d",&n,&m);
for(int i=;i<=m;i++)
scanf("%d%d%d",&tim[i],&x[i],&y[i]);
f[]=;ans=;//!
for(int i=;i<=m;i++)
{
// f[i]=f[1]+pd(1,i);
f[i]=;
for(int j=;j<i;j++)
if(pd(j,i))f[i]=max(f[i],f[j]+);
ans=max(ans,f[i]);
}
printf("%d",ans);
return ;
}