解题思路
只要在两次时间间隔内两只鼹鼠的曼哈顿距离小于或等于时间间隔,机器人都可以移动过去直接打掉或者等待打掉。
即可转换为一般的线性dp问题
C++ 代码
#include <iostream>
#include <cstring>
#include <algorithm>
using namespace std;
const int N = 10010;
int n, m;
int x[N], y[N], t[N];
int f[N];
int dist(int i, int j) {
return abs(x[i] - x[j]) + abs(y[i] - y[j]);
}
int main() {
cin >> n >> m;
for (int i = 0; i < m; i ++ ) {
cin >> t[i] >> x[i] >> y[i];
}
int res = 0;
for (int i = 0; i < m; i ++ ) {
f[i] = 1;
for (int j = 0; j < i; j ++ ) {
if (t[i] - t[j] >= dist(i, j)) {
f[i] = max(f[i], f[j] + 1);
}
}
}
for (int i = 0; i < m; i ++ ) res = max(res, f[i]);
cout << res << endl;
return 0;
}