なんだか振り返りがアツすぎて(やったことを振り返る系)色変記事のようになってしまいました……
あれこれ取り組んでみて、結局ダメだったバージョンの記事がこちらです。思い返すと本当にいろいろ試して、躓いて、様々なことを成し遂げたもののレーティングにはつながらなかったというつらい一年でした。しかし万策尽きたわけではありません。なんと言っても私は天才ですから、この経験から学びを得て今年こそは本当につよくなって、今私の頭上で戦っている皆様にスカイアッパーを食らわせるのです!
まずは2020 年の目標と成果を振り返ります!
下記リンクをご覧いただけるとわかるのですが目標は
- まずは AtCoder 1500 AC、
- そして各種コンテストサイトを合わせて、2500 AC です。
のようで、当時のあっとこ AC 数は 857 だったようです。
結果
いま見ると 1747 です。一応達成ではあるのですが、ほぼ問題は埋めておらずですね。去年から突然強化された ABC があまりに暴力で、出ているだけで勝手に増えていました。予想外です……
他コンテストサイトを合計した AC 数も無事達成(?)のようです。
Solved By ngtkana
— ながたかな@VSinger (@ngtkana) 2021年1月3日
Topcoder: 0
Codeforces: 531
AtCoder: 1747
AOJ: 124
yukicoder: 582
library-checker: 0
Sum: 2984
https://t.co/VkukviCMxn
正直な感想
- 1 年前の自分、AtCoder まだ 800 問しか解いていなかったのですか!?
- 1 年前の自分、レーティング 2136 もあったのですか!?(現在 2158 (+18) です。)
- AC 数系の目標は新 ABC によって見事に爆破されてしまいましたね……
- 結局 AC 数以外のことをしていました。
ところで2020 年はどのように過ごしましたか?
ここ一番好きなセクションです。皆様ぜひです(悲願ポーズ)
一言でいうと、本当に迷走して、空回りした一年でした。今後に活かすべく過去のポストをさかのぼりながら振り返っていきましょう!
2020 年の序盤はバーチャルコンテストを重視していました。はてなブログもたくさん書き、解法もまとめていました。これ系で最も大きかったのは ARC 完走です。これは 2019 年の秋頃から始めており、2020 年に差し掛かったあたりで終了にこぎつけました。そこで勢いをつけたもののネタが不足してしまった私はその後、Educational Codeforces Round を走り始めます。
しかしいつからかこの方針に疑問をいだき始めました。バーチャルコンテストにたくさん参加すると、確かにお手軽にレーティングは上がるのですが、なんだか「解き散らかしている」感じがしてきて、一旦もう少し基礎的なことを頑張らないといけないのではないかと感じてきました。そこからは迷走の期間です。ARC の未解決を埋めようとしたり、企業コンを走ったりなどです。Trello や Growi など多岐にわたるツールに手を出したり、ローカルにプロジェクトマネジメント系の怪しいレポジトリも散在していた気がします。えでゅほを走るのも継続しており、一応これがメイン目標だったのですが、なんだかうまく回っていない感じはしました。
お盆休み、これが転機でした。なんだかまとまったことを成し遂げたい気持ちになり、あり本を通読(記載されているアルゴリズムと問題を全部実装する)するというかなりエクストリームな精進に手をだし、自分でもびっくりなのですがなんと完遂しました。辞書的にしか使ったことがなかったのですが、はじめから隅々まで読むことで知見がもりもり出てきました。競技プログラミング界隈ではよく、「手に取りやすいけれど、読むたびに知らないことが出てくるすごい本」と評判で、それは私も同意するところなのですが、いえ、私は変わりました。あり本に書いてあることは全て知っています。(「本書で扱わなかった発展的トピック」以外……でしたね。)
「あり本企画のようなすごい精進がしたい!」そう思いながらしばらく迷走をしました。夏学期(?)の反省を踏まえ、「とき散らかさない」精進について考えると、「問題埋め」が浮かびました。そしてはじめに選んだのは当時何故か大流行していた AOJ-ICPC でした。理由はこのあたりです。
- ICPC は実装が大変と聞いており、私はそういうものを解きたかったですし、
- 問題数があまり多くなく手頃でしたし、
- なんか流行っていたからです。(あの?)
しかし当時ジャッジの rust のバージョンが 1.15.0 でとてもつらかったため、途中で断念して JOI に切り替えました。そこからしばらくは JOI 埋めをしました。下記は 100 点問題まとめなのです。結局、難易度 6 の途中くらいまで埋めました。私のレベルですと、ちょうどギリギリ手応えがあるようになってきたあたりですから、結局美味しいところまでは到達できなかったのですが、また機会があれば続きから取り組もうと思います。
JOI に取り組んでいた感想ですが、難易度の問題以上に、「やるだけ」が多くて疲れてしまったというのはあります。それもそのはず JOI はすべて空でコーディングする競技ですから、ゲーム性も若干違います。セグツリーさえ活躍せず、なんだかお仕事でもしているような気持ちになってしまいました。それでも高難易度になれば変わるでしょうと信じ、解き進めていきました。(結局 6 で止まってしまったので、わからずですが。)(低難易度が面白いコンテストサイトとしては、yukicoder を推したいです。)
そしてなのですが、JOI 企画での地味な進歩としては
- スプレッドシードで管理するようにして、
- まとまった単位ごとに記事にしていたということがあります。’
スプレッドシートさん、お初の入門だったのですが、良いですね。モダンなツールにこだわりすぎて失敗していましたが、持つべきものはグーグルさんです。記事については、結果論ですが、時間をおいて続きから取り組みたいときにも嬉しいと感じました。このあたりの問題意識を持ち始めたのがこの付近一番の成長でしょうか。これまでは AtCoder Scores さんや AtCoder Problemsさんに頼りっきりでした。使い捨てでも良いですから少しは自分で把握して見通しを立てる努力をしたほうが良いということを思い知らされました。
JOI 梅をしているさなか、AtCoder Library (ACL)が発表されました。「最近高度なアルゴリズムを書いていなません!」な気持ちになっていた私はすぐにこれに飛びつき、「ここにあるアルゴリズムを実装して、ご無沙汰でした ac-adapter-rs にACL Contest 1までに一通りコミットしましょう!」と思いました。急いで作ったために洗練はされていませんが、2 種間でほぼ困らないくらいに充実しました。
その後もライブラリを充実していこうと思ったのですが、いかんせん問題を埋めていてもなかなかであることができません。そこで様々な本を読み漁っていたのですが、そんなとき、出会ったのがこの健康青じいえ『アルゴリズムイントロダクション』です。
ACL コンテスト明けあたりから、アルゴリズムイントロダクションを読み始めました。はじめはあり本企画に倣って「書いてあるアルゴリズムを片っ端から実装する」をしており、これで第一巻までは走りきりました。赤黒木が地獄でした。そこから第2巻に来て、DP、貪欲などに差し掛かったあたりで「実はもっと座学に寄せたほうが良いのではないでしょうか」と思い至り、方針変更をしました。とはいえ B 木、フィボナッチヒープ、van Emde Boas 木などのデータ構造は一通り実装しました。また、読書によって知識を増やしていく必要を実感した私は、この数ヶ月でたくさんの本に興味を持ちました。これもおって整理して、しっかり消化していきたいです。
そうしているうちに年末になり、年末企画で第2巻を終わらせました。今に至ります。
今後の身の振り方について
2021 年の目標を考えるに当たり、いまスタックしているプロジェクトを整理していきましょう !
アルゴリズムイントロダクションさんと仲良くしていきます。
引き続き同じ感じで取り組もうと思います。あと未着手なのがこちらです。考えた結果、🤔 マークのものは飛ばして 💖 マークのもののみに取り組むことにしました。数えてみるとたったの 289 タスク(しかもうち 50 程度は終わっている)ですから、冬休みの半分程度です。
- 27 🤔 マルチスレッドアルゴリズム
- 28 💖 行列演算
- 29 💖 線型計画法
- 30 💖 多項式と FFT
- 31 💖 整数論的アルゴリズム
- 32 💖 文字列照合
- 33 💖 計算機科学
- 34 🤔 NP完全性
- 35 🤔 近似アルゴリズム
なぜ 🤔 マークを飛ばすかというと、競技プログラミングからは若干それるため、
- 直接レーティングに繋がりづらそう
- 興味・関心の観点で、モチベーションの維持が難しそう
と感じたからです。決してこれらの分野を係止するわけではありませんし、今後私がこれらに興味を持つ可能性はあり、またそうなるのが望ましいです。しかし今の所、この冬休み後半も(初版なので内容は違いますが)実際にやってみて、やはり進捗が目に見えて悪くなりましたから、「今、興味のあること」に寄せていくのが良いでしょう。
この計画は、おそらく割とすぐに終わります。その後は未解決問題は気長に拾い(←スプレッドシートで細かく管理していたので、お時間をおいても回収可能です!)つつも、拘泥せずメインストリームは次に進めていきたいです。
問題埋めについて
再開してこちらをメインにしていきたいです。埋める対象は AtCoder、順番は配点順にしようと思います。今日中にこれ用のスプレッドシートを作っていこうと思います。(スプレッドシートにとりつかれている人です。)
まずは 600 点以下の未 AC を速攻で埋めていきたいです。詰まるとは思うのですが、1, 2月で解き切れるでしょう。
こちらはどのあたりまで行けるかはわからないのですが、1100 くらいまでは埋めたいです。
重み付き配点対応前の問題は、気まぐれで埋める乃至走るで稼いでいけたらという感じで良いでしょうと思っています。
読書について
アルゴリズムイントロダクションが終わったら一旦休止して落ちついて考えたいです。「次に読みたい本」をジャンル(アルゴリズムイントロダクションのセクション)で分けてリストアップして置きましょう。あくまでアルゴリズこの本お名前長くありませんか?を軸に広げていくスタンスで、問題埋めが進んできてから実行に移すで良いでしょうか。今思い浮かぶのはこのあたりでしょうか。慎重に検討します。
バーチャルコンテストについて
走るならえでゅほでしょうか。ちょっと今は位置づけが難しいですから、留保としたいです。
作問について
ご無沙汰でしたし、当面は取り組まないのですが、ストックはためていきたいです。
2021 年の目標
正直なお話、一年も先のことはわかりません。3 ヶ月や 6 ヶ月ならばなんとかなりそうなものですが…… ええ、一年というのは目標を立てるには長すぎる気がしてならないのですが、慣例ですから、立てておきましょう。こちらです!
- AtCoder 1100 点以下を埋めます。(現在残り261 問)
- AtCoder AC Count 30 位以内に入ります。(現在 118 位(1747)です。30 位は fumiphys さん(2188)です。)
感想
色変記事のようにになってしまいました。