文学徒が競プロをするブログ

競技プログラミングの精進を記録していきます

センター五割の数弱でも水色になれたので次は青色になりたいねというお話

水色になったーー!!!!!

f:id:sarashina-nikki65:20191001041406p:plain

これは何

色変記事です。実は今まで一回も書いていないんですね。

レート1201は実質緑みたいなものでまだまだ気は抜けないのですが、ここで書かないとまた青まで書かない気がしたので書きます。

文学部だけど筆無精、なに。

ちなみにタイトルはアレですね、今までの振り返りをしていると引退するみたいでとても嫌なので、過去を見るなら未来も見ようという自分への戒めです。

僕は誰

理系つよつよな大阪大学で、肩身の狭い思いをしている文学部の人間です。

専門は西洋史学で、旧ユーゴスラビア地域の民族対立について研究しています。本当にプログラミング微塵も関係ねえな。

タイトルにもありますが数学がまったく出来ず、センター本番ではⅠA: 73点, ⅡB: 32点というバカをやって「予定通り!ガハハ!w」とかほざいていました。

こんな人間でも水色になれるんだなあ。

大学に入るまで

大阪の公立校で生徒会とか男子バレーボールとか演劇とか放送とか色々していましたが、競技プログラミングをやろうとすら思っていませんでした。

というのもうちで競プロをしていたのは「数学研究部」だったので、怖がって近づかなかったんですよね。

ちなみに一つ上には難読問題文に登場することでお馴染みjoisinoさんが、一つ下には抱腹絶倒ギャグでお馴染みolpheくんがいました。行っておけば良かったとものすごく後悔しています。

大学に入ってから

二年生の終わり頃、何か刺激が足りないなあと思い、Twitterで知能が天元突破してそうな人々を手当たり次第にフォローし始めました。

はすじょいさんや卵生の人々など、凄い方々を眺めてすげえすげえと言っていたのですが、その内に欲が出てきて、彼らの輪に入りたい、自分も彼らのようになりたいと思うようになりました。早い話憧れました。

ではどうやったら彼らのようなプロになれるのかと思い、彼らは普段何をしているのかを観察してみると、何故かみんなプログラミングか言語学をしていました。

数弱文系ぼく「言語興味ないからプログラミングだな!w」

どうして?馬鹿なの?

......ということで「苦しんで覚えるC言語」という神サイトでCから勉強し始めることにしました。
いやこのサイト本当に神で、実行環境とエディタを配布してくれてるんですよね。素敵。ありがとう。これが無ければ僕はプログラミングを始められていなかったと思います。

コンテストに出るまで

何か標準入出力とかループとか条件分岐とかやってた気がする。なんにも覚えてねえ。
特に週末の夜、TLのプロたちが競技プログラミングの話を盛んにしていたのもあって、最初からコンテストに出るつもりで勉強していました。
ちなみにAtCoder初提出はWAでした(https://atcoder.jp/contests/abc090/submissions/2234462)

コンテストに出てから茶色になるまで

2018/03/25のABC092が僕の初コンテストでした。2完でした。
ただここからがものすごく苦しくて、周りに人がいなくて孤独だし、わからんことだらけで面白くないしで、何回か出た後しばらくやめてしまいました。
何かアプリ作ろうと思ってJavaを勉強していた記憶があります(実はそのまま去年の11月くらいまでJavaで競プロしてたんですよね)

それが変わったのが、競技プログラミングslackに入ったことでした。
元々有名な競プロslackにはゆかもちさん主催のslackがあったのですが、氷影さんという方からそれよりも更に初心者向けで集まろうという声かけがあり、それに参加させていただいた形でした。

いや、質問したら答えが返ってくるんだよね、すごい。はかどる。
ここでnaoppyくんだったり、すくさんだったりにお世話になりました。何か途中からevimaさんが来るわけんちょんさんが来るわでめちゃくちゃ充実した教育環境になっていました。

てか今見返したらかなり早い段階でtatyamさんがいるのウケるな、絶対初心者じゃないが。

まあそんなこんなで頑張ったら、9月のAGCで1完速解き大成功をキメて茶色になりました。

氷影さん本当にありがとう。本当は緑色になった記事で書こうと思ってたんだけど、筆無精で結局書かなかったや。
プログラミング関係でお世話になった人は多々いるけれども、初めの一番苦しい時を乗り切らせてくれた氷影さんには、特別な恩を感じています。真に僕の人生を変えてくれたのはあなたです。本当にありがとうございました。

氷影さん、何か探したら垢消えてたけど。まあええやろ。

緑色になるまで

何したか何も覚えてねえ。レート遷移を見るに、結構早かったのでは。

正直今は緑色に上がるまでも地獄感があるので、僕の頃の話は聞き流しておけばいいと思う。15分で3完を続ければすぐに上がれる時代だったので......(今はどうなんだろうね)。

そろそろまともなアルゴリズムを覚えなきゃってことで、けんちょんさんの記事を必死に読んでDFSとかBFSとかbit全探索とかを理解しようと頑張ってた気が。

図書館の自習スペースで、累計20時間くらい唸ってDFSについて少し理解したとかだった気がするな。再帰、難しすぎるんだよね。

あとは200を速く解こうと、必死に200埋めをしていた気がする。300埋めもした。しんどかった。

あとこの時期にゆきりんさんが阪大競プロer飲み会を企画してくださって、くるさんに絡んだり、師匠ことfineさんに初めて出会ったりしました。
ここでプログラミングの話をわちゃわちゃしたのが予想以上に楽しくて、エンジニアとして社会に出るということを決断したんですよね(実は文系就職しようと考えてました)。

ゆきりんさんありがとうございました。

あとこれをきっかけに僕に競プロの師匠ができて、とても嬉しかったです。

競プロを始めた頃の何も分からず苦しかった時間を思い、変わったなあなどと思っていました。

師匠には本当にお世話になっております。また青まで長くかかる気がしますが、よろしくお願いします。

そんで2018年最後のコンテストで緑昇格したので、かなり感動した。

ここから水色まで10ヶ月かかってるの笑うしかないな。

水色になるまで

お ま た せ

よ う こ そ

収 束 の 森

マジで地獄でした。収束ってこわいね。

4月くらいまでは調子が良く、旧ABCを全完して青パフォを出したりもしていました。レートも1100間近になり、5月には水色だと思ってウッキウキでした。
会瀬さんやじゅぴろを認知したのがこの辺だったと思います。
しかしこの時期から同じくらいの実力の人たちが流入してきたようで、水パフォ以上を出すのが一気に苦しくなりました。

そしてAGCで爆死したり企業コンで爆死したりでレートを3桁にまで落としたり、新ABCで収束しまくった結果、コンテスト成績表がグロになり始めました。

f:id:sarashina-nikki65:20191003144736p:plain

一番下の青パフォがABC全完ですぐ水色になれると思っていた時、二つ目の青パフォはAGC嘘解法速解きでぬっくぬくに温まった時です。
あの嘘解法がなかったらまだまだ水色までかかっていたんでしょうね。こわ。

その後も収束を続けながら、コンテスト4回でレートを15上げるというコツコツ精神を見せた後、1450くらいのパフォを連続で取っただけで水色になってしまいました。良いのかこれ。

水色になるまでに勉強したこととか

基本はなんだかんだ実装力だと思う。思いついた解法をサッと試せるかどうかというのは、正答率や精進の効率に大きく関わってくると個人的に思っています。
実装に頭を使うと本質の考察がどうしても鈍ってしまうので、頭を使わずに実装が出来ると良いんじゃないかなと。

これは汚い実装をしろということではなくて、頭を使わなくてもきれいな実装が出来るくらい練習しろということです。

受験数学でも、計算に頭を使わない人ほど本筋をしっかり考察できて強い、みたいなことがありそうじゃないですか。僕は真逆なので知りませんが、国語でも似たようなことを思うし、多分これは正しいです。

僕はとりあえずDFSとかBFSとかbit全探索とかは徹夜明けで脳みそが死んでいても書けるようになりました(ほんまか?)。

そしてとにかく競プロの基本は全探索なので、全探索をまず考える癖はついた気がします。

あと数学に多少慣れたのかなと思います。二項係数は今でもかなりしんどいし出たらキレるけど、この間のDみたいな、素因数分解系やGCD系はかなり解けるようになりました。ライブラリを整備したのでね。

いや貼るだけで解けると、気持ちが良いんですよね(「貼るだけ」が競技プログラミングの醍醐味の一つだと思ってるので、そらbeetさんに憧れるわなという気はする。ICPCのライブラリ準備の時は大変お世話になりました)。

最近の収束を打破しかけているものとしては、DPのおきもちを理解し始めているのが一つ要因な気がします。最初にあの概念に触れた時は、僕は一生DPを解けないと思っていました。
この間のbitDPが初めて本番で解けた問題だったので、割と感無量でしたね。

DPはね、慣れです。とりあえずたくさん遷移図を書いてウンウン唸りながら問題を通していくと、いつの間にか少しわかるようになってます。不思議。

あとなんだろうなあ。解法ガチャを回すことを覚えました。とりあえず操作回数を決め打ちしてみたりとか、にぶたんを考えてみたりとか、適当に貪欲を書いてみるとかですね。

400までの地頭パズル系は、大体実は簡単だったりするので「解ける」という強い意思を持って紙に書きまくるとその内本質が見えます。あ、AGCは除きます。あれはね、配点こわれてるからね。

まあ、正直まぐれで水色になったようなものなので、これからも精進します。

次に行くためにすること

青になりたいですね。青になるためには何の精進をするべきかですが、個人的には500全部埋めて、600半分以上埋めて、こどふぉの難易度1500~2000くらいを埋めようかと思っています。あとJOIの難易度5~7くらいですかね。

正直地頭パズルはあまり好きではないのですが、文句を言いつつがんばります。

まあ流石に青までは行きたいし、出来れば師匠に追いつきたいので、社会人になっても精進は続けます。

このくらいかな。

競プロ初参加(2018/03/25)からジャスト一年半でギリギリ水タッチ、才能ははっきり言ってないけど、地道にやっていこうと思います。

まあ、(大学生 && 数学的なバックボーンがない) 人間の中ではかなり上位に入ったんじゃないかなと思います。

青まで行って、競プロer全体で見ても普通に強いと言えるようになりたいですね。

謝辞

彼女へ: コンテスト時間待っていてくれて本当にありがとうございます。
氷影さんへ: 本当に感謝しています、ありがとう。
師匠へ: いつも出来が悪くてごめんなさい。面倒見てくれてありがとうございます。はやく橙になって。
じゅぴろへ: インターンがんばれ、僕は卒論をしつつ精進をする。
くるさんへ: 東京行ったらご飯おごってください。嘘です。本当にお世話になりました。ありがとうございます。
かわらさんへ: 絶対青になると確信しています。
Badlyさんへ: 次にチーム戦の機会があれば、また組みましょう。
Arkさんへ: また組んでください。ICPC頑張って!
明石高専勢へ: 雑なくくりでごめんね、また大阪に来てください。
卵生ホエールくんへ: 僕がプログラミングを始めたきっかけは君です。セルビア語やらへん?
Pocalaくんへ: 阪大来て黄色になって一軍に入ってください。
逢瀬さんへ: 文系同士頑張りましょう!!
おるふぇへ: キレた?ウケる。早く君が誰か知りたい、絶対会ってるだろ

ここから会ったことない人

はすじょいさんへ: えー絡んだことないな。でも実は僕がプログラミングを始めた元凶なんですよね。関西に来てください。
beetさんへ: 会って友達になってみてえ。会ったらその時は僕のなろうブックマークを御開帳します。
うしさんへ: 実は日経の懇親会で顔を確認したので片特定しています。牛タン食べに行きませんか?

何か人としてふざけてる人が好きなんですけど、大体競プロerみんな境界線上のホライゾンとかぶっ刺さると思ってるんだよね、みんなで読まない?