2020-07-28 ARC040 A, B, C
ARC040 A, B, C 考察
ARC040 A 床塗り
N * N
のすべての要素を前から順に走査して赤の個数・青の個数を数える。それらを比較して指定された文字列を出力する。
https://atcoder.jp/contests/arc040/submissions/15495562
ARC040 B 直線塗り
N <= 100
なので N ^ 2
の二重ループの形でも時間的には問題ない。
銃を撃つ回数を最小にしようと思うと '.'
の上に移動してから銃を撃つと良い。こうすれば射程をうまく活かすことができて無駄撃ちを減らせる。ただし移動回数を最小にしようと思うと '.'
をすべて塗ることができる最小限の移動に留めるのが良い。つまり右端の '.'
に届くなら '.'
の上まで移動しない。
全体の最も右にある '.'
の位置を確認しそれがなくなるまで時間経過をシミュレーションした。各時間ごとに撃つか移動するかを選ぶ。最も右の '.'
が射程内にあるなら終了する。そうでなければ '.'
の上に居るなら撃つ。そうでなければ移動する。
難しくはないのだけど簡単そうに見えて意外と面倒くさい。
解説を見ると移動の回数と撃つ回数を別で求めて足している。賢い。
https://atcoder.jp/contests/arc040/submissions/15495636
ARC040 C Z 塗り
1 行目から順に各行を操作する。それぞれ塗られていない箇所を Z の下に下がる位置だと思って塗る。これを繰り返す。塗る回数を出力する。
B よりむしろ簡単に感じた。
https://atcoder.jp/contests/arc040/submissions/15496430
リングフィットアドベンチャー 41 日目 レベル 82 ワールド 9 。