Description
相信很多人都玩过英雄联盟,身为一个优秀的召唤师,你需要能很好地补兵。假设你使用的是无极剑圣,
你只能对小兵使用普通攻击和阿尔法突袭,施放普通攻击和阿尔法突袭的时间都为 1 秒,普通可使用
无限次,造成 x 点伤害,无冷却时间,阿尔法突袭有 4 秒冷却时间(即施放四次普通攻击后可使用一次该技能),
造成 y 点伤害,需要消耗 m 点法力值。那么你补一个小兵最少需要多少时间?
Input
输入数据有多组(你需要用文件结束符),每组占一行,包含 x,y,m,M,L,其中 M 为剑圣的总法力值,L为小兵的血量,x,y,m的意义见题目。
Output
对于每组测试数据,你要输出打死一个小兵最少需要的时间。每组占一行。
Sample Input
2 3 3 10 200
2 3 3 10 30
Sample Output
99
14
Hint
文件结束符的用法:
while( scanf( “%d%d%d%d%d”, &x, &y, &m, &M, &L ) != EOF )
{
…
}
很简单的模拟题,就直接模拟。存在的坑点可能是当y<x时,用阿尔法突袭是不明智的;还有边界要向上取整。
#include<iostream>
using namespace std;
int main(void)
{
int x, y, m, M, L;
while (cin >> x >> y >> m >> M >> L)
{
int t = 0, n = 0;
if (x < y)
{
n = min(L / (y + 4 * x), M / m);
t = n * 5;
L -= n * (y + 4 * x);
if (L && M - n * m >= m)
L -= y, ++t;
}
cout << (t + (L ? (L + x - 1) / x : 0)) << endl;
}
return 0;
}