あああああ

オタク & 競プロ

AtCoder 橙になりました!

こんにちは、Rubikunです。

AtCoder 橙になりました!

もしかしたら最高到達地点になってしまうかもしれないので、今までやったことをまとめておこうと思い、筆を執りました。

 

高度なデータ構造やアルゴリズム、大学以降で学ぶ数学、グラフ理論や最適化など(使い方合ってる?)に対する知識、理解は乏しく、初期武器は大学受験までの数学だけでプログラミング未経験から1年と少しの間競プロの問題をひたすら解いて実力をつけていった人間なので、一番真似しやすいやり方だと思うし、似た取り組み方の人の参考になったらと思います。

やったこと→ポエム→色々スクショ、の構成です。

 

 

 

やったこと

 

AtCoder

・ratedの橙diff以下全埋め,赤diff 42/75AC

・unratedの黄diff以下全埋め

・旧ARC-C全埋め

・その他は適当に解いて2170AC(16位),RPS 409100(34位)

 

Codeforces

・Div.1バチャ,本番参加 70本ぐらい

・Educational Round 40本

・その他Div.2,Div.3も適当に解いて741AC

 

AOJ-ICPC

・400点以下全埋め

 

チーム練習

・5hセット 20本ぐらい

 

Codeforces 赤になる

Topcoder 赤になる

 

 

コメント

 

黄色→橙になるには(どのレート帯でもそうだと思いますが)、早解き力と高難易度力が重要になってくると考えています。

早解き力→パフォ下限を高くする

高難易度力→パフォ上限を高くする

 

早解き力について

1つ上の色を目指す上で遅解きが直接致命的になるのは、適正未満の問題だけです。

とりあえずAtCoderにある自分のレートから1,2色下の問題は全部埋めましょう✨

あとはこういう場合はこう書くってのを慣れによって固定できるといいんですかね、よくわからないです。

添字ゲーは1日あたりの取り組む時間を増やせば慣れで勘が冴え渡りやすくなるような気がしています。

コンテスト前々日ぐらいから短期間で解きまくると瞬発力がつくのは真だと思っています。

 

高難易度力について

黄diff埋め→ド弱点以外は解けるのが望ましい そもそも橙目指すのに黄diffが埋まってないのはまずい

橙diff埋め→ほどよく面白い 基本的に本番解けたら橙パフォ出るので達成感が出ておすすめ 1日1,2問でも十分そう

赤diff埋め→だいたいむずい それでもこのジャンルならいけるかもってのがわかってかなり良かった(自分の場合は、なんか操作をしてなんかを求める系がたぶん得意となった) これのおかげで配点が高い方の問題に特攻して成功したので幸せ

 

点数ごとにしろdiffにしろ問題の位置にしろ、その難易度帯全部埋めるって気持ちでやると、いろんなジャンルに出会えて本番チャレンジしていいものとそうでないものの見極めができるようになってくるのでオススメです。(そもそも適正より上の問題を任意のジャンルで1時間程度で解けたら既に色変わってそう)

 

その他

 

色々なところで言われていますが、問題を解くこと中心で強くなりたいと考える場合、異常な吸収力がない限りはAtCoderの問題では足りません。

 

Codeforces Div.1バチャは、感覚としてはARC,AGCでいうと400-600-700-900-hard-hardのような配点になっています。(回によって200点ぐらいはブレます。)

問題の質がーとよく言われていますが、Div.1に限って言えばやっても無駄と言い切れる回はすぐには思いつかないぐらいの頻度です。writerが赤の人の回に絞ると変な回の割合はさらに減ります。

たまにAtCoderのratedでは使うことのないデータ構造を求められることがありますが、こういう問題になったらただ〇〇するだけでは解けないので、このデータ構造が必要になる、ということを知っておくのは確実に役立つのでそれもまた良いことだと思います。

AtCoderの目標色までのdiffを埋めたら次にやることとしては1番オススメです。

 

AOJ-ICPCは400点以下しかやっていないのですが、重実装に耐える練習にはなります。AtCoderメインの人だとよほど実装が苦手ではない限り、重要度は低いかもしれません。

450点以上はまだそんなにやっていませんが、考察が必要な問題も増えるらしいです。

 

5hのチーム練習は今年の2月ぐらいから平均週1ぐらいでやっています。

チームメイトが2人とも自分よりだいぶ強いというかなり恵まれた環境にいるので、全員にオススメすることができないのがアレですが、得られたものをまとめようと思います。

 

・1段階上の問題に強制的に取り組める。

自分がコンテスト中に通せる難易度の問題は、中盤にはさっと通されてしまうので、本腰を入れて取り組む問題が明らかに自分の適性を超えた問題になります。で、だいたいわからないのですが、それを復習することで上のレベルを知ることができます。

まあこれはソロでも意識すればできると思います。

 

・賢い実装を学べる。

そのまんまです。色々あるんですが、同じ処理を関数にするとかは特に重要だと思いました。

これもソロでも他の人のコードを読むなり意識すればできますね。

 

・プレッシャー

2人以上が同時にコーディングできないというルール上、嘘解法だったり自分の実装でバグらせると終わりです。dpを紙コーディングで詰めるの、かなりオススメです。

このおかげでコンテスト終盤で通し切る確率が上がったかなと思っています。

 

 

ライブラリ関連

 

かなり少ない方で、黄色からほとんど増えていません。

↓一応変更点

 

・セグ木、遅延セグ木を抽象化しました。

・struct{~~~}みたいなのをちょっとできるようになりました。(名前被ることなくなるし複数持ちたいときにも便利だと思った)

・重心分解、HL分解を書いてみた。

・文字列アルゴリズム(蟻本+KMP,Z-algorithm,Trie)

 

AtCoderではライブラリそんなにいらなくないか?っていうのは自分もそうだと思います。殴れる系はあると便利なのは事実なのでお好みで。

仕上げに文字列アルゴリズムが必要となる問題はAtCoderのratedの過去問でも何問かあり、考察はできているのにそこの整備不足で落とすのは悲しいので使える場面を学ぶだけでも一通りやっておくのがオススメです。

 

 

適当なこと

 

※これは適当なことです。色変テンションで書いていますが、すぐに黄色落ちしたら笑ってやってください。

 

黄色から橙は精進量とよく言われますが、本当にそうだと思います。

自分は、問題を解くことが大好きだったので、精進量が重要ならひたすら解けばいいだけだ、と言う気持ちでやっていました。

橙を目指すのに黄色の人の中で埋もれているままじゃダメだろ〜と思って、いろんな人との解いた量の差を意識していました。これだけやって負けるのやってられなくね?って言える状態になるのがベストです。

シャワーを浴びる前、布団に入る前に考察する問題を1問頭に入れておくのはマストだと思ってやっています。昔は食事の時もだったんですが、最近は食事に集中するようにしました。

もちろん問題を解く以外の競プロに関係のありそうな別方向からの努力でもいいと思いますが、黄色→橙は、ratedが減ることにより体感距離がかなりあるので今まで以上に、適当にではなく長い間真剣に取り組むことが必要だと思います。

精進モチベがなくなったら - あああああ

↑オススメの記事です。

 

黄色なりたての時は、早解きだけが取り柄で、それならだいたいの黄色には負けないし早解きでいい順位でるの楽しい〜って思ってて、CodeforcesのDiv.2バチャをたくさんやってラスト2問はわからなかったけど順位いいしOK!をしていました。

で、簡単な問題を早解きしても別に面白くないな…って突然なって1完差つけるをしたいとなって、高難易度練習を始め、自明枠が多くあるセット(Codeforces Div.3とか)をするのをやめました。(結果が出るのが早すぎて関係があったのかは審議ですが、この感情になってから銅diffを通し赤パフォ→赤diffを通し橙パフォ→赤diffを通し橙パフォ、で橙になれました)

心境の変化に至った要因は不明です。

 

解説ACについて

3ヶ月に1回ぐらい立ち位置変わっている気がする…

試験管付きの問題(特に旧ABC,ARC)は、そもそもその典型を知らない可能性があるので、典型を学ぶ場として解説ACをするのはかなりアリ。

ratedの問題は、青以上の人なら知らないとどうしようもないという問題は赤diff中位以下なら10%もないと思います。自分で正解の考察にたどり着くまでに解法ガチャを引くと思うんですが、そこで出てきたものは同じ系統の考察だ、なぜ今回は解法Aが有効で、解法Bではだめだったんだろう、と一度に得られるものを数倍に増やすチャンスなので、自力で粘ってみるのが良い。

が今の考えです。

 

NoSubについて

運営側がルールを作って防ぐのは不正を考えると難しいらしくてほーーとなったので、最近は言及を減らしました。(好きではないことには変わりませんが)

逃げられない状態にして必死に考えることでより経験値を得られるのは言わずもがなだし、実力UPしないままだとレートが上がるにつれて撤退することになるコンテストが増えていくの、苦しそう

初手CEはかっこいいけど、自分の性格を考えると初手CEなんてしなきゃよかったって思考が99%コンテスト中に出てくるというデメリットを考えてしていません。

 

 

最後に

 

4000字ぐらい長々と書きましたが読んでくれてありがとうございました。

えー今までの色変よりもこれが絶対必要ってピンポイントで言えることが少なくなっているのを感じているので、ふわふわした内容になってしまった気もします。

何をするか迷ったらとにかく問題を解きましょう。

AtCoderの問題は考察重視で面白くて、実装がそこまで重くないことがほとんどで、これやらないで逆に何やるの?ってぐらいまずはやるべきだと思っています。

 

赤パフォ2回出せたからレートは急上昇したけど、橙パフォ以上の割合はまだそこまで高くないので、本当に橙の実力あるのか?っていうのはまだ半信半疑です。(橙の誰相手でも勝率50%超えるイメージ湧かないしたぶんない)

ですが、橙からは赤にもプレイヤーとして意識されると聞いていて、自分の中でも橙の人たちは"わかってる"人の集団っていう雰囲気がかっこいいと思っていたのでそこにたどり着けたことは素直に嬉しいです。試行錯誤しながらもこれからもたくさん問題を解き、レート100ずつを区切りとして目標にしながら、ここまで来たならいつかは2800に到達したいです。

 

これからもよろしくお願いします!

 

 

スクショ

こういうの記録しておくの好きです(2回目)

始めてから13ヶ月にしてはかなりやってる

精進グラフ40000pt/月ぐらいあるの少し自慢

 

2019年まとめ - あああああ

↑年末

 

f:id:Rubikun:20200608045544p:plain

AtCoderレート

f:id:Rubikun:20200608045756p:plain

Codeforcesレート

f:id:Rubikun:20200608045906p:plain

Topcoderレート

 

f:id:Rubikun:20200608052234p:plain

パフォ(2019-11に黄復帰)

f:id:Rubikun:20200608050043p:plain

Rating History

f:id:Rubikun:20200608050213p:plain

統計,ABC

f:id:Rubikun:20200608050544p:plain

ARC,AGC

f:id:Rubikun:20200608050552p:plain

Difficulty Pies

f:id:Rubikun:20200608050620p:plain

デイリー

f:id:Rubikun:20200608050629p:plain

Heatmap

f:id:Rubikun:20200608050659p:plain

f:id:Rubikun:20200608050706p:plain