解题思路:
注意事项:
参考代码:
#include<cstdio> #define max(a,b) a>b?a:b using namespace std; int main(){ int M,S,T; scanf("%d%d%d",&M,&S,&T); int flash=0; //一直用闪,能移动的距离 int dist=0; //闪和跑的移动距离,其实是记录每一秒变化下最佳移动距离 for(int t=1; t<=T; ++t){ if(M>=10){//魔法值足够 flash+=60; //1秒60米 M-=10; } else //魔法值不足,停下来休息 M+=4;//1秒恢复4点 dist=max(dist+17,flash);//记录当前这一秒最大移动距离。 if(dist>=S){ printf("Yes\n%d\n",t); return 0; } } printf("No\n%d\n",dist); return 0; }
0.0分
21 人评分
题目不是说,只有停下才能恢复能量吗 我看的时候觉得那个选择停下来恢复能量还是往前跑是个选择很麻烦,,但是这个好像是跑的时候就可以恢复能量,只要没有闪就恢复,,是不是有问题,,但是系统判定又是真确的,,是不是我哪里没看懂,,,
追猫的熊 2019-12-05 22:44:31 |
好像是能量虽然再往前跑,但此时dist和flash是两种不同策略:一直跑和憋蓝放闪现。而可以证明,长远来看一定是憋蓝放闪现走得快,只在离终点很近时直接跑可能更快。故一直在加蓝。
如果flash没有加60 m加了4,dist也加了17,这不矛盾吗?
C二级辅导-公约公倍 (C语言代码)浏览:1550 |
三角形 (C++代码)记忆化搜索浏览:1318 |
C语言程序设计教程(第三版)课后习题9.2 (C语言代码)浏览:573 |
Minesweeper (C语言描述,蓝桥杯)浏览:1176 |
字符逆序 (C语言代码)浏览:506 |
C语言程序设计教程(第三版)课后习题5.5 (C语言代码)浏览:582 |
C语言程序设计教程(第三版)课后习题1.5 (C语言代码)浏览:438 |
杨辉三角 (C语言代码)浏览:505 |
1048题解(读入回车问题)浏览:628 |
C二级辅导-求偶数和 (C语言代码)浏览:707 |