洛谷P1095 守望者的逃离
题目描述
一个人的跑步速度为17m/s, 他可以释放技能瞬移每次消耗10点魔力,移动60m,需要1秒时间,如果站到原地不动休息,每秒恢复4点魔力,给出由初始位置走到终点的距离 s ,初始魔力 m ,时间限制 t;
输入:m s t
输出:第一行输出是否可以按要求跑到终点,能就输出Yes,否则输出No,如果第一行是Yes,第二行输出最短时间,如果是No,输出跑的最长的距离
思路:将两种方法分开处理,先算只用技能的一组数据,然后用普通方式更新每一组数据,从前到后求出最优解
代码如下:
#include<bits/stdc++.h>
using namespace std;
int m,s,t;
int f[300010];
int main()
{
cin >> m >> s >> t;
for(int i = 1;i <= t;i++)
{
if(m >= 10) f[i] = f[i-1] + 60, m-= 10; //能用技能就用
else f[i] = f[i-1],m += 4; //不能就原地恢复
}
for(int i = 1;i <= t;i++)
{
f[i] = max(f[i], f[i-1] + 17); //求出最优解
if(f[i] >= s)
{
cout << "Yes" << endl;
cout << i << endl;
return 0;
}
}
cout << "No\n" << f[t] << endl;
return 0;
}
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】凌霞软件回馈社区,携手博客园推出1Panel与Halo联合会员
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 长文讲解 MCP 和案例实战
· Hangfire Redis 实现秒级定时任务,使用 CQRS 实现动态执行代码
· Android编译时动态插入代码原理与实践
· 解锁.NET 9性能优化黑科技:从内存管理到Web性能的最全指南
· 通过一个DEMO理解MCP(模型上下文协议)的生命周期
· 工良出品 | 长文讲解 MCP 和案例实战
· 多年后再做Web开发,AI帮大忙
· centos停服,迁移centos7.3系统到新搭建的openEuler
· 记一次 .NET某旅行社酒店管理系统 卡死分析
· 上周热点回顾(4.14-4.20)