atcoderに参加してみた

ABC167と168に出た。両方4完でパフォーマンスはギリ水(1293)と緑(1091)。今回下がったのはCでWAしまくったからだろう。ロジックにミスが見当たらなかったので誤差の扱いが雑だったっぽい。まだどういうケースで落ちてたのか見つけられていない。提出したコード見直したら普通にミスっててズコーってなってる。まあ実際これくらいの力量だろうという気もするが、せっかく取り組んでいるのでもうちょい出来るようになりたい。

まだ2回しか参加していないけど、過去問を5, 6回解いたので概ねやるべきことがわかってきた。ABCDあたりまでは難しめなとき以外は素で解ける(30~40分くらい)が、焦っているのでミスもしている。今回なんかA問題を普通にWAして痛恨だった。信じられん。とりあえずもう少し遅くなってもいいから、焦らずにまずはこの4問をノーミスで丁寧に解くことだろう。ノーミスが安定してきたら速度を上げていけばいい。その頃には慣れているだろうから、自ずと速くもなるだろう。

E, Fは今の力量では(かなり簡単だった時を除いて)まだ解けない。今回はEが少し惜しかった(解説通りの解法を時間内に思いつくところまでは行った)が、解法を思いついていてもエッジケースの処理まで思い至っていなかったし、「単純な数え上げ」に手こずってサンプル通すのすら間に合わなかった。いちいちググってる場合じゃあないんだよな。場慣れしていってよくある処理なら一瞬で書ける、という風にしていけばもう少し時間に余裕ができると信じたい。Fはグリッド上をBFSで埋めるには(2*109)2の範囲は無理だし、と思って、交差判定から一般の場合のポリゴンの面積計算を上手く適用できないか考えてドツボにハマっていた。この時間をEに注ぎ込んだら解けてたりするんじゃないか? 大抵の場合問題の難しさはちゃんとE<Fっぽくて、逆転してるのはかなり例外的なケースみたいだから、先の問題を覗いてみるのは十分な力量がつくまで一旦やめた方がいいかも。

今後は典型的な問題を解いていって、その解答から自分用のライブラリを切り出して、典型的な数学的考察はその場で考えるんじゃなく頭の中にキャッシュしておく、というようなことをする必要があるだろう。……なんか、そう書いてみると競プロ専用の精進をしているような気がしてちょっと微妙な気持ちになってきたな。いや、まあ今までもグラフ上の探索とかレーベンシュタイン距離のDPとか書いてきたし、ごく普通に生きていても競プロ的思考が役に立つ場合が存在するのは間違いない。競プロに限らず、どんな分野を学ぶときも得られるものには汎用の知識・技術からあんまりそうでもないものまでグラデーションがあるけれど、そこを綺麗に分離するのは実質的には無理なので、素直に精進する方が手っ取り早い。それに今の自分の力量だとまだまだ吸収できる技術には普段から役に立つものの比率がかなりでかいだろうし。

ひとまず水色になるくらいまでは頑張ってみるか。でもこれレーティングのシミュレータ見たら結構かかりそうなんだよな。まだ青パフォは出せないだろうし。まあぼちぼちやります。