P2285 [HNOI2004]打鼹鼠
题意简述
一个鼠可以用一个三元组\((t_i,x_i,y_i)\)表示,指这个鼠会在\(t_i\)时刻出现在\((x_i,y_i)\)。
给定方格大小\(n \times n(n \le 1000)\) 和 鼠的个数\(m(m \le 10000)\),你现在有一个机器人,\(0\)时刻可以放在任意位置,每次可以走到上下左右,求最多能逮到鼠的个数。
简单口胡
这种题能蓝?
显然两点之间能否在\(t\)时间到达只与其距离有关。
设\(i\)鼠和\(j\)鼠之间的距离为\(\operatorname{dis}(i,j) = |x_i - x_j| + |y_i - y_j|\)
如果\(t_j - t_i (t_j > t_i) \ge \operatorname{dis}(i,j)\),那么可以从\(i \to j\),否则不行。
设\(dp_i\)为走到第\(i\)个鼠的最大答案,考虑转移,易得:
\[dp_i = \max_{1 \le j < i} \{{dp_j \mid dis(i,j) \le t_i - t_j}\}
\]
初始化\(dp_i = 1\),\(\mathcal{O}(m ^ 2)\)