AtCoder Beginner Contest 146

結果

順位    359th / 5026
パフォーマンス  1799
レーティング    1839 → 1835(-4)

 E問題以外の5完。しかし、うーん、E問題解けないようではひどい。レート下がるのもしょうがない。

 前回ドハマりした反省として、今回は順位表を常に眺めながら参加した。ある問題について何人解けているかという情報は大きく、それである程度の難易度を察することができる。それが問題を解く力を付ける上で良いのかどうかは判断がつかないが、最近はちょっとまたレート最大化に拘りたいという気持ちになってきたのでこうすることに。今回はそれが結構大きく、F問題が簡単であることが読み取れたのでそっちに先に取り組んだおかげで大失敗を免れた。

A - Can't Wait for Holiday

 流石にこれは曜日名をコピペしたが、コピペしても結局何を求めるのかでやや混乱した。strs.end() - find(strs.begin(), strs.end(), S)と書けることが思い浮かんだので満足。

 提出

B - ROT N

 最初は全部小文字かと思ってそう処理するプログラムを書いたら意味不明な文字列が表れて混乱した。なので無駄なキャストが挟まってしまった。不満。

 提出

C - Buy an Integer

 C問題で二分探索を求めるのはやや難しめ? 桁数を求める部分とかがきれいに書けなくてやや不満。

 提出

D - Coloring Edges on Tree

 解法自体は簡単にわかるけどどうやって実装するかに少し迷う。最終的に辺にインデックス持たせてそこに書き込んでいく感じの実装にして、まぁそんなに悪くなかったかな。

 提出

E - Rem of Sum is Num

 F問題を解いてからこっちに取り組んで、累積和 Sについて S_j - j \equiv S_i - i \; (\mathrm{mod} K)となり、かつ j - i \lt Kとなるこのを数え上げれば良いというところまで気づいたのにそこからどうやればいいのかがわからなくて解き切れなかった。std::mapを自然に使うだけで良いじゃん。なんでこれが思い浮かばないのか。錆びつきすぎている。

 類問がパッと思い浮かばないのも全然練習していないことの証左。とにかく練習が足りない。

 提出

F - Sugoroku

 妙に解いた人が多いので先にこっちに取り組んだ。そういうのもあってどうせ単純な解法なんだろうと決めてかかる。まず適当にダイクストラ法書いて提出してTLE。さすがにそれはわかれよ。適当すぎる。ちょっと考えて後ろから貪欲で良さそうと思ったのでそれを書いて勝ち。これが間に合う理由もまともに考えてなかったけど、戻らないなら O(N)はなるほど、そうか。

 提出