解题思路:
注意事项:
参考代码:
#include<iostream>
using namespace std;
long long M;//魔法初值
long long S;//出口距离
long long T;//沉没时间
long long dp[500005];//存每一秒的最优解,这里开大一点,题目没明确说。
int main()
{
cin >> M >> S >> T;
//下面的思路就是,我们先将魔法值用完,之后等它恢复,有十点了我们就闪现一次
//这时得到的 dp[]数组中有很多相同的值,因为我们在恢复魔力时,是不能动的。
for (int i = 1; i <= T; i++)
{
if (M >= 10)
{
dp[i] = dp[i - 1] + 60;
M -= 10;
}
else
{
dp[i] = dp[i - 1];
M += 4;
}
}
//下面我们就只走,这时我们肯定会替换掉上面 dp[]数组中的一些值,替换的过程就是寻找最优解的过程
//也就在这时,我们就比较了这个时间段,是停下来闪现好,还是直接跑比较好
//同时,我们也记录了在 T 时间里,我们跑过的最远距离 dp[T]
//而 i 的值又恰好是我们经过的时间
//根据题目要求
//成功的话输出 "Yes"和所用的最短时间 i
//失败的话输出 "N0" 和跑过的最远距离 dp[T]
//注意大小写,我交了好几次,就是因为"Yes"没写对出错了
for (int i = 1; i <= T; i++)
{
dp[i] = max(dp[i], dp[i - 1] + 17);
}
for(int i=1;i<=T;i++)
{
if (dp[i] >=S)
{
cout << "Yes" << endl;
cout << i << endl;
return 0;
}
}
cout << "No" << endl;
cout << dp[T] << endl;
return 0;
}
0.0分
0 人评分
C语言程序设计教程(第三版)课后习题4.9 (C语言代码)浏览:949 |
2003年秋浙江省计算机等级考试二级C 编程题(2) (C语言代码)浏览:690 |
WU-格式化数据输出 (C语言代码)浏览:1818 |
【魔板】 (C++代码)(时间超限,希望会的帮我改正一下)浏览:804 |
C语言程序设计教程(第三版)课后习题6.5 (C语言代码)浏览:616 |
Hello, world! (C++代码)浏览:1778 |
蛇行矩阵 (C语言代码)浏览:606 |
Hello, world! (C语言代码)浏览:766 |
C语言程序设计教程(第三版)课后习题9.8 (C语言代码)浏览:672 |
1197求助浏览:667 |