P1853 守望者的逃离

该程序通过一个for循环模拟每秒的移动过程,主角在1秒内可以跑17米,或者消耗10点魔法瞬移60米。如果魔法值不足10,则每秒恢复4点。当主角的移动距离超过给定目标时,输出Yes表示能在限定时间内逃脱;否则输出No。

 

#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;
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值