たったこれだけの問題でも、学ぶべきことがすごくあるイメージ!!!
問題概要
2 つのボタンがあってそれぞれ大きさが である。
大きさ のボタンを押すとコインが 円もらえて、ボタンの大きさが 1 減って になる。
2 回だけ好きなボタンを押すことができる。最大でコインが何円得られるでしょうか?
制約
考えたこと
この手の問題で、できる限り思考停止できることが大事だと思う。editorial では丁寧に場合分けをしているけど、それさえ必要なくて、今回やりうる手は 3 通りしかない!!!
- 1 個目のボタンを 2 回押す
- 2 個目のボタンを 2 回押す
- 両方のボタンを 1 回ずつ押す
この 3 通りしかない。
- 1 の場合:コインは
- 2 の場合:コインは
- 3 の場合:コインは
よって何も考えずに、if 文使って場合分けとかもせずに、この 3 つの場合の最大値を求めればいい。すなわち
max({A*2-1, B*2-1, A+B})
をそのまま返せばよい。
#include <iostream> #include <algorithm> using namespace std; int main() { int A, B; cin >> A >> B; cout << max({A*2-1, B*2-1, A+B}) << endl; }