题意:一个人在打怪,他每回合可以选择喝药加血或者打怪,然后怪物会攻击他一次,让你输出一个他可以打死怪物的方案(任意一个即可,特殊判定),但是注意他的血量可以无上限。第一行输入他的当前血量h1,攻击力a1,药每次回复c的血量,第二行输入怪物的血量h2,怪物的攻击力a2。
思路:因为血量无上限,所以我们可以先把血加到一个刚好能打死怪物的血量,然后再开始打怪。
加血的时候怪也会攻击你。我因为这个WA了一发。。。
#include<bits/stdc++.h>
using namespace std;
int main()
{
int h1,a1,c,h2,a2;
while(~scanf("%d%d%d%d%d",&h1,&a1,&c,&h2,&a2))
{
int num = h2 / a1;if(h2 % a1 != 0) num++;//攻击次数
int sum = a2 * (num - 1); //需要承受的伤害
int H = 0;
while(H * c + h1 <= sum)
{
sum += a2;
H++;//喝药次数
}
printf("%d\n",H + num);
while(H--) printf("HEAL\n");
while(num--) printf("STRIKE\n");
}
return 0;
}
/*
10 6 100
17 5
11 6 100
12 5
*/