/* * 023_sample.cpp * * No.23 技の選択 * 難易度3 */ #include #include static const int INF = 1e9+7; int main () { // 標準入力 int H = 0; // 敵のHP int A = 0; // 通常攻撃で与えられるダメージ int D = 0; // 必殺技で与えられるダメージ std::cin >> H >> A >> D; // dp[敵の残りHP]=敵を倒すのにかかる最小攻撃回数 double dp[H+10010]; for (int i = 0; i < H+1; i++) { dp[i] = 0; } for (int i = H-1; 0 <= i; --i) { // 残りHPの総攻撃回数と攻撃する回数を足して // より少ない攻撃回数を求める dp[i] = std::min(dp[i+A] + 1.0, dp[i+D] + 1.5); } // dp[0](残りHP0)のときの期待値が答え std::cout << dp[0] << std::endl; return 0; }