ABC134 (ABCE4完)
AtCoder Beginner Contest 134をやりました。
Eが解けた!しゅごい。いうて今回のEは簡単だったんじゃないんでしょうか。私が解けてるので。逆にFはべらぼーに難しそうな香りがしました。
今回でレートは茶色に乗りました。もっと精進せねば。まず緑。
A - Dodecagon (AC, 21:01)
そうなんだ…(面積の話)(数学雑魚)
B - Golden Apple (AC, 21:04)
つまり監視員1人は視程×2(左右範囲)と+1(正面の1本)の範囲が監視できると。
なので木の総数をその値で割って、小数点以下は切り上げればいいでしょう。
(解説を見たところ、A/Bの切り上げを求める式があるんですね。こういう細かいところをもっと学んだ方がよさそうですね…)
C - Exception Handling (AC, 21:12)
問題を読んだ時点で考えることは、「最大値と次に大きい値しか使わないな」と。
さらに同じ値でも場所が違えば別物として扱う(入力例2から)と。
ということで
- 入力を受け付けるときに最大値と次に大きい値を記録する。この次に大きい値は、最大値に等しい場合もある
- ループして最大値を出力していく。ただし対象の値が最大値と等しい値の時は、次に大きい値を出力する
こういう形に落ち着きました。
E - Sequence Decomposing (AC, 22:09, 4WA) (めちゃくちゃ嘘っぽい)
解けたとは言うものの、正直悔いは残る。
実は21:37時点でロジックは組みあがっていたものの、単純な条件分岐のミスで上手くいっていないことに気づいていなかった。
サンプル例が少ないからと自分で入力例を考えることでこれに気づいたが、時すでにお寿司であった。
これがさっさと終わっていれば、Dも解けただろうに。
色塗をすると書いてありますが、結局のところ複数の昇順の数列に分解するということですね。問題タイトルにもDecomposingと書いてあります。
そういうわけなので、先頭から効率よく数字を詰めこんでいきつつ…なんだか貪欲チックな風に書いたら通りました。めちゃくちゃ嘘っぽいし、あとで実行時間順で提出一覧みたらめっちゃそんな感じだった。クソ笑えますね。笑えませんけど
D - Preparing Boxes (WA)
問題文の意味を理解するのに滅茶苦茶時間がかかった。
ある箱について、書かれている番号の倍数の書かれた箱も含めた、ボールの合計数の偶奇を指定する。そのような入れ方は存在するか
という話ですね。まずここにたどり着くのに時間がかかりました。
次に考察を進めます。どう考えても、例えば2番の箱について、4,6,8...と何個入っていようが、2番の箱に入れるボールの数だけで偶奇は制御できるのでは?と。
ここでなぜかうん?????となって止まりました。何故。
つまり番号が大きい方から進めていけば、倍数の偶奇を確認して、今の番号は入れるか入れないか決めればいいだけという話ですよね。ここにたどり着いたのはEを通した後のコンテスト終了10分前の話です。当然間に合いませんでした。
結果こそよかった方ですが、悔いはたくさん残ります。
そういう意味では、とても有意義で楽しい時間だったと思います。やっぱりプログラミングは楽しいですね。
今回の反省点は
・考え方の正誤もそうだけど目の前のプログラムの出来にも気を払う
・サンプルデータが少ないなら自分で作ろう。考え方の検証も出来ていいぞ
・問題文の読解能力が低すぎる。
このあたりでどうでしょうか。