どうして自分は水色になれなかったのか

これは、KMC Advent Calendarの25日目の記事です。

adventar.org

前日はid:cc141君の公認会計士試験を受けてみたでした。 公認会計士すごい。

はじめましてzekeです。競技プログラミングとかやっています。

突然ですが見てほしいものがあります。

f:id:zekehamp:20191227013945p:plain
水色になれなかった人

目標としていた「この記事を書くまでに色を変える」ことができませんでしたーーーーー!!!!!

いや、Advent Calendarに登録した時点では色変記事書く気満々だったんですよ。いや、ほんとに。 しかし、この度色を変えることができなかったので、色変記事ならぬ「色が変わらなかった記事」を書こうと思うんですよ、書くネタがマジでなかったため。 趣旨としては、ここ最近のコンテストで好成績を残せなかった反省をつらつら述べるだけになっております。 それでもいい方は、最後まで読んでいただけると、ありがたいです。

水色になれなかった理由その一 : やはり精進が足りなかった

競プロの原点にして最も大事な精進。やっぱりこれが足りないのが第一の理由でしょう。

f:id:zekehamp:20191227015114p:plain
12/27時点でのABC埋め状況
うーんって感じです。Cはともかくとして、Dをもっと埋めるべきですね。過去ツイで見たことがあるのですが、自分のレートの0~200上ぐらいの問題を埋めるのがよいとのこと。確かに、将来的にはそのレベルに達するために頑張るわけなので道理にかなってます。しかし、自分の悪い癖として「分からん………解説見るか…あっ(何かを悟る)…そっ閉じ」を繰り返してしまうというのがあります。問題を解いてレベルを上げないといけないのに「自分にはまだ早い」とか「やるだけなのでメンドイのでやらない」とか自分に言い訳をして、敬遠してしまう傾向があるようです。それだといつまでたっても成長しませんね。そういう反省もあり、最近はバチャをやったり緊張感のある状態でやることで「解説ACをできるだけ避ける、解説を見たとしても頑張って、一から実装する」ということを意識しています。 あと、これは個人的な意見なのですが、自分のレートより著しく低い問題を埋めることはしていません。AC数だけを稼いで「今日は競プロめっちゃやったなー」という仮想満足をしないためです。もちろん解くスピードをあげるために解く必要はありそうですが、難しい問題を頭抱えて考えるほうが自分は好きなので水色以上のdifficultyを埋めることを意識してます。

水色になれなかった理由その二 : コンテストに最後まで集中できる環境、体調を整える

これは意外に大事だと思います。

f:id:zekehamp:20191227020601p:plain
AtCoder Performancesより
11月後半にガクっと下がっているのが分かります。わかりやすく大爆死をきめています。 この理由として、

  • この時学祭があって気持ちが浮ついていた
  • サークルのシフトを七時間こなした
  • コンテストをやるよい場所がなかったので、ネカフェでコンテストをした

これらの状況でやったのが大きいと思います。結果、ABCでAB二完という惨敗をしています。 これは余談ですが、このコンテスト終わった後、憂さ晴らしに朝までカラオケなどをやっています。 つまり、「落ち着いて集中できる状態で」、「体調を万全にして」、「慣れた場所で」コンテストを行うことが大事でしょう。 そういった状況下では、

  • 少なくとも爆死の可能性は大幅に減らせる
  • 過去に解いた問題を効果的に想起することができ、類似問題が出た時に大きなアドバンテージになる
  • いつもと違うことが起こっても(5完しても緑パフォなど)気持ちが乱されない
  • コンテスト終了間際まで集中力を維持できる

といったメリットがあると思います。 なので、最近は可能な限り、自室で30分ほどの仮眠をとった後に、ウォーミングアップとして数問解いてからコンテストに臨もうとしています(なかなか難しいですが)。

水色になれなかった理由その三 : 本番慣れしていない

これは競プロにとどまらず、受験などにも共通すると思うのですが、やはり本番になれるというのは大事です。つまりは、もっとratedに出ろってことですね。やはり練習だけでは

  • 解いている問題がどのくらいの難易度かわからない(順位表情報からある程度分かることもありますが)
  • 思いついた解法にしがみついてしまう
  • 初手で躓いた(簡単な問題でWAを生やす)などの想定外な出来事に弱い

といったものがあると思います。 特に二つ目は自分では大きいと思っていて、この問題ではO(1)の解法にコンテスト中ずっととらわれていて二分探索でできることに気づくことができませんでした。 やはりレートが関係するコンテストならではの緊張感を毎回感じていて、それによる失敗はあると思います。 そこで数日前、初めてCodeforcesのdiv2に出ました。ratedのコンテストを増やして、早く本番慣れをしたいです。

水色になれなかった理由その四 : フラグを立てた

これはお手本のようにフラグを立てる阿呆の図です。

ほんっとにフラグを立てるのは危険です!!!! 間違ってでも、

  • コンテスト前に「あっ次のコンテストで色変わるわwwww」
  • コンテスト中に「あっ勝確www」

とかをやってはいけません!!!!! 慢心ダメゼッタイ。 こんなことをするから、

こんなことになるわけです。

こんなことを言ってきましたが、

自分は競プロが好きです。19年生きてきて、ここまで一喜一憂しながらも、ここまで熱心に取り組んでいるのは初めてかもしれません。やっぱり難問にぶち当たって、悩みに悩みぬいた挙句、思いついた解法で実装してはWAを生やし、ドイツ語の授業を犠牲にして考察を重ねた結果出すACには格別なものがあります。やはり、水色になるには、その過程を楽しむといったことが一番かもしれません。年内にはあと二回のratedがあります。これまでの反省を踏まえて、水色めざしてがんばっていきたいと思います。