!-- Loading 底层遮罩 -->

P2285 打鼹鼠

传送门

思路

当两只鼠鼠出现的时间间隔小于出现位置的曼哈顿距离时,则可以衔接(二连击),所以定义状态 dp[i] 为击打了第 i 只鼠鼠后的击打数,状态转移方程为寻找前 i-1 只鼠鼠(曼哈顿距离内)被击打时的击打数值( dp[1~i-1] )的最大值,在此基础上+1。初始化时要注意每只鼠鼠都为1(已经击打)。 

代码

#include<iostream> #include<cmath> #define MAXN 10010 using namespace std; int n, m, x[MAXN], y[MAXN], times[MAXN], dp[MAXN]; int main(void) { cin >> n >> m; for (int i = 1; i <= m; i++) cin >> times[i] >> x[i] >> y[i]; dp[1] = 1; int ans = 0; for (int i = 2; i <= m; i++) { dp[i]=1; for (int j = i - 1; j >= 1; j--) { int len = fabs(x[i] - x[j]) + fabs(y[i] - y[j]); if (len <= times[i] - times[j]) dp[i] = max(dp[i], dp[j] + 1); } } for (int i = 1; i <= m; i++) ans = max(ans, dp[i]); cout << ans; return 0; }

 


__EOF__

本文作者星晴
本文链接https://www.cnblogs.com/xqk0225/p/16078944.html
关于博主:评论和私信会在第一时间回复。或者直接私信我。
版权声明:本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!
声援博主:如果您觉得文章对您有帮助,可以点击文章右下角推荐一下。您的鼓励是博主的最大动力!
posted @   Thinker-X  阅读(28)  评论(0编辑  收藏  举报
(评论功能已被禁用)
相关博文:
阅读排行:
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· 三行代码完成国际化适配,妙~啊~
· .NET Core 中如何实现缓存的预热?
· 如何调用 DeepSeek 的自然语言处理 API 接口并集成到在线客服系统
点击右上角即可分享
微信分享提示