n*n的网格,有m个鼹鼠,t时间会有一只鼹鼠出现在(x,y)点处,如果机器人也在这个点就可以打到鼹鼠
机器人初始位置任意,每秒可以移动一格,问最多打到多少鼹鼠
*解法:f[i]表示前i只鼹鼠打了多少个
#include <iostream> #include <cstdio> #include <cmath> using namespace std; #define SZ 10005 #define INF 1e9+10 int f[SZ]; struct mice { int t, x, y; }p[SZ]; int main() { int n, m; scanf("%d %d", &n, &m); for(int i = 0; i < m; i++) scanf("%d %d %d", &p[i].t, &p[i].x, &p[i].y); for(int i = 0; i < m; i++) { f[i] = 1;//只打这一只 for(int j = 0; j < i; j++) { if(p[i].t - p[j].t >= abs(p[i].x - p[j].x) + abs(p[i].y - p[j].y) ) { f[i] = max(f[i], f[j] + 1); } } } int ans = f[0]; for(int i = 1; i < m; i++) ans = max(ans, f[i]); printf("%d\n", ans); return 0; }
原文地址:https://www.cnblogs.com/pinkglightning/p/8419164.html
时间: 2024-11-06 13:48:08