1 条题解
-
0
本题的思路类似于LIS。设 为到第 个鼹鼠为止可以打到几个, 为 两点之间的曼哈顿距离, 和 分别表示第 个和第 个鼹鼠出现的时间。(即从 到 所需要的时间小于等于第 个鼹鼠和第 个鼹鼠出现的时间差),则有转移方程 。类似与LIS,在取答案的最大值时需要将 加上 ,因为最坏情况下也能打到 个鼹鼠。
#include<bits/stdc++.h> using namespace std; const int N=1e4+5,INF=0x3f3f3f3f; int n,m,f[N],ans=-INF; struct node{ int t,x,y; }a[N]; inline int dis(node x,node y){ // 曼哈顿距离 return abs(x.x-y.x)+abs(x.y-y.y); } int main(){ scanf("%d%d",&n,&m); for(int i=1;i<=m;i++) scanf("%d%d%d",&a[i].t,&a[i].x,&a[i].y); for(int i=1;i<=m;i++){ for(int j=1;j<i;j++) if(a[i].t-a[j].t>=dis(a[i],a[j])) f[i]=max(f[i],f[j]); ans=max(ans,++f[i]); } printf("%d",ans); return 0; }
- 1
信息
- ID
- 800
- 时间
- 1000ms
- 内存
- 125MiB
- 难度
- 3
- 标签
- 递交数
- 85
- 已通过
- 44
- 上传者