(ΦωΦ)<これの答えですよー。目次はここ。
---
問2-1
#include <iostream>
#include <algorithm>
using namespace std;
const int inf = 987654321;
int main(void) {
int h, a, d; scanf("%d%d%d", &h, &a, &d);
vector<double> dp(h+1, inf);
dp[0] = 0; // 与ダメージ0のときの攻撃回数は0
for(int i=0; i<h; i++) {
// 通常攻撃
int x = min(h, i+a); // 与ダメージiのときにダメージaの攻撃を与えた場合、与ダメージxはこうなる。
dp[x] = min(dp[x], dp[i] + 1); // 与ダメージiのときにダメージaの通常攻撃を与えた場合、攻撃回数は1回増える。
// 必殺攻撃
int y = min(h, i+d);
dp[y] = min(dp[y], dp[i] + 1.5);
}
double res = dp[h]; // 与ダメージhで敵は倒れる。
printf("%lf\n", res);
return 0;
}
(ΦωΦ)<おしまい