


#include<bits/stdc++.h>
using namespace std;
int main() {
int m, s, t, a = 0, b = 0;
cin >> m >> s >> t;
for (int i = 1; i <= t; i++) { //以1s为一个循环
a += 17; //1s跑17米
if (m >= 10) { //瞬移1次 消耗10点魔法值
m -= 10;
b += 60; //1s瞬移60米
}
else m += 4; //魔法值不够,等待1s恢复4点魔法值
a = max(a, b); //贪心策略,如果瞬移得更远则a=b。
if (a >= s) {
cout << "Yes" << endl << i; //能跑出去
return 0;
}
}
cout << "No" << endl << a; //时间到,跑不了了
return 0;
}
该程序通过一个for循环模拟每秒的移动过程,主角在1秒内可以跑17米,或者消耗10点魔法瞬移60米。如果魔法值不足10,则每秒恢复4点。当主角的移动距离超过给定目标时,输出Yes表示能在限定时间内逃脱;否则输出No。
377

被折叠的 条评论
为什么被折叠?



