AtCoder Beginner Contest 176に参加しました。ABCDE5完1WA1TLE(75:32)で792位でした。パフォーマンスは1613でレートは1460→1479。

感想

 なんかCでしょうもないWA出してしまった時点で嫌な予感がしたけど、やっぱり空回りして全体的にうまく行かなかった。それでも青パフォが取れてるのは幸いだけど、青色になるにあたって今欲しいのは、ちまちま青パフォ下位を取り続けることではなく、一発黄パフォを叩き出すことなので、心境としては微妙。

A - Takoyaki

 3ヶ月前ならこういうのifで場合分けしてただろうなぁと思いながら、ちゃんと(N-1)をXで割って1足したものにTをかける処理を書いてAC。

B - Multiple of 9

 (C++ユーザーは)ちゃんと文字列で処理しようという問題。Pythonだと次のような処理でACできるから強い。まぁ僕はC++で書きましたが・・・。

N=int(input())
if N%9==0:
    print("Yes")
else:
    print("No")

C - Step

 コーナーケースも引っ掛けもなく、C問題にしては易しい方の問題だったのに、for文の終了条件をN-1とすべきところを、Nにしてて1WAしてしまった。最近こういうミス減ってたのに油断してたところでやらかしてしまう。本当にもったいない。

D - Wizard in Maze

 ダイクストラで間に合うかぁ?と悩みつつ、C問題での1WAもあるし、慎重になりながら、結局ダイクストラで提出したら通った。01-BFSというテクを使えばO(HW)で解けるらしいけど、名前しか見たことがないので要チェック。

E - Bomber

 正直一番の反省問題。爆弾が置かれている数を行、列でそれぞれ管理して、それぞれ最大となるパターン同士の組み合わせを考える。どの組み合わせにおいても交点に爆弾があったら1引くのが引っ掛け、ってことはすぐに見抜けた。が、何を思ったか制約条件のオーダーを勘違いして、最大とならないパターンも含めて全探索してTLEしたり(Eで流石にそのガバガバ制約はないだろ・・・)、上記の実装に手こずってめちゃ時間かかってしまった。最大となる行×最大となる列の全探索でも間に合うことは少し冷静になればわかることなのに、頭があまり回らなくて、そこにたどり着くまでに無駄に時間がかかってしまった。あと実装も下手。

F - Brave CHAIN

 順位表を見て撤退。

反省

 Cの1WAとEの1TLEはちゃんと確認しておけば防げたミス。あと先週可読性がどうこう言っておきながら、Eでむちゃくちゃな解法&コードを書いてしまった。D問題以降は考察→実装→早とちり→考察の無駄な反復をしがちなので、実装に移る前に要件をちゃんと整理した上でコードを書き始めること。あとコンテスト本番で集中力が中々続かずEあたりでボーっとしながら同じ思考を繰り返してしまって無駄に時間が過ぎる、的なことをなるべく防ぎたい。