Motsu_xe 競プロのhogeやfuga

Motsu_xeが競技プログラミングに関する何かを適当に書き連ねるブログになるはずです。

AtCoder橙になりました

この記事は「色変記事 Advent Calendar 2020」7日目の記事です。

事の始まり


TLに流れてきた狂気のアドベントカレンダー。そして、そのときの私のレート
f:id:Motsu_xe:20201206220525p:plain
橙になるまで残り+75。今年の目標として橙になることを上げていた私は、このアドカレに登録するかどうか、悩む。悩む、悩み、悩んだが、ついに登録しようと決心。しかし、その時点でアドカレの後半は既に埋まっており、AGC1回, ARC3回で橙にならねばならないことが確定。そして

結果

というわけで、ARC109にて、ついに橙コーダーになることと相成りました!最高!!!

橙コーダーになるまでにしたこと

以前
motsu-xe.hatenablog.com
こういう記事を書いた*1ので、主に2020年に何をやったかを話したいと思います。

とりあえず各種データを持ってきます。
f:id:Motsu_xe:20201206222344p:plain
f:id:Motsu_xe:20201206222400p:plain
f:id:Motsu_xe:20201206222415p:plain
f:id:Motsu_xe:20201206222429p:plain

えーー、ご覧になるとお分かりになると思いますが、2020年、全然競プロをやっておりません。精進グラフはコンテストに出れば勝手に増えていくので、要はまあいわゆる精進はしていませんね。

これはAtCoderに限った話なのですが、Codeforcesも薄橙にならないと使えない機能があるとか小耳に挟んだ*2ので、薄橙になるために何回か出ただけでまともにやっていません。

またICPCの予選に出場*3したので、そのための精進はしていたんですが、構文解析担当だったので、そればっかやっており、AtCoder力には大きな影響はなかったと思います。

では何故レートが上がったのか。これはコンテストが上手くなったという話に集約されると思います*4

コンテストの技術

競技プログラミングは"競技"ですから、実力を測るものではなく、コンテストで競って勝つことがレートを上げる唯一の方法です*5


彼を知り己を知れば百戦殆からず」という言葉があります*6。意味はよく知りませんが、敵と自分をの状況を完全に把握さえできれば最強であるというような意味でしょうおそらく。ここで彼とは自分以外の参加者であり、己とは自分のことです。

競プロでレートを上げたいのであれば、コンテストで高順位*7をとる必要があります。ですから、他の参加者がどのくらい問題を解けて、自分がそれに勝ちうるような選択をする必要があります。

彼を知る

私は彼をよく知らないので、何とも言えませんね。今後の課題かも。

例えばですが、AtCoderユーザーは割と前から順番に解いていくのが好みなようで、順位表のABCとABCDの間とかには人が結構少ないことがわかります。なので、例え3完しかできなくても、ABDとかを解いていれば、まあギリギリ4完した人と同じくらいのPerf.を出せるわけです。Wow。

己を知る

ところで私の2020年3月以降、レートを+10以上した回の正答状況をみてみましょう。

ARC109 ABCE
AGC049 BCD
AGC048 ACD
ACLC1 ABCE
AGC047 ABE
AGC044 AC
AGC043 AD
日立PC ABCE

というように、まあ前からちゃんと解いてみたいな方法をしている回はただの1度もありません(逆にいうならそうしている回はレート変動は+9以下であるということです)。

またこのような情報もあります。

ここからわかるのは、とりあえず問題飛ばして高難度を強引に通すというような解き方でしかレートを上げられないし、そもそもARCではレートが上がらないし、AGCでは大体上がるということもわかります。

こうなっている原因の考察も重要ですが、この傾向でどう戦略を組み立てるかも重要です。まず一番露骨な戦略では


というものがあります。*8この戦略は近3回で実施しましたが、1勝2NoSubです。mod問題はサンプルが強いがちなので、NoSub戦略最大のデメリットであるところの、あってると思って提出したら通らなくて破滅が発生し辛いというものがあります。

他にも、AGCに置いても低難度を破壊した後は、後半の問題を眺めるとかの戦略が良いとわかります。

全人類これでいいじゃないかと思われるかも知れませんが、そんなことはなくて、高難度問題で得意問題を判別する能力が必要です。私は得意不得意がかなり露骨なので、何となくみたら解けそうか解けなそうかが見える*9のでこの戦略がはまっているだけで、満遍なく得意な人とかは、素直に前から解いていくのが良いケースが多いとは思います。

終わりに*10

競技プログラミングは毎回敵との斬り合い、楽しいね!一番いいのは高レートの人がA問題を通したところで闇討ちするのが最適戦略なんですが、うまいこと行きませんね。念を送ったりはしているのですが。何の記事だったんだろこれ。

おまけ

色変に失敗したときに作ろうと思ってたもののラフ
f:id:Motsu_xe:20201206230911g:plain











.

*1:今さらタイトルの誤字に気づいたが、放置____

*2:結局これが何なのかわからない

*3:惜しくも敗退

*4:当然全く問題を解いていないわけでもないので、実力も上がってはいるはずではありますが

*5:たまに精進しても何でレートが上がらないのかという人がいますが、これは自明でコンテストで勝利していないからです。

*6:孫子ね。同感だわ

*7:高得点ではない。3完最速と4完最遅の価値は大体同じ

*8:南米の主婦層の辺りにはNoSubは犯罪だと言っている族もいるが、とんでもないNoSubは合法なんだよ。

*9:当然外して破滅することもある

*10:大体記事というものは書き始めたときは意気揚々としてるけど、途中で文才の無さに絶望してだれてくるのがよくないわね。


スポンサードリンク