夏日・真夏日・猛暑日

作問・解説・精進メモ

JOI 2021/2022 二次予選 参加記

動機

ここ で「書くぜ」って言ったのに書いていなかったので

本番前

多分だらけてました、あと Twitter にいました(いつものこと)

一年に数回しかできない「じょい」をツイートし、コンテストが始まりました。

本番中

00:00 A を開く。

問題文が「stack 使え」と叫んでいるので、数十秒後くらいから書き始める。

01:13 A を AC。B を開く。

12:03 親の顔より見たグリッド上の BFS を書いて、B を AC。C を開く。

ちょっと考えても全然分からないので D に行く(自明部分点は後で取ることにした)。

愚直な DP が生えたので書く。

40:51 書き上げて、D の部分点(51 点)を取る。

DP 配列を出力して、にらめっこすると、どう考えても無駄なところがあるので、削ろうとする。

ここでめちゃくちゃ時間を食う。

111:29 バグを何度も生やしつつ、D の満点を取る(遅すぎる)。DP めちゃくちゃ苦手なのでこれは仕方ない。思考過程は ここ に書いた。

もう一度 C を開いて、親の顔より見た bit 全探索を書き始める。

120:24 C の部分点(26 点)を取る。もっと親の全探索見ろ

よく見ると C の小課題 1 は約数列挙で行けるので、書く。

123:10 書き終えて、場合分けして、小課題 1(12 点)も取る。合計 38 点。

満点解は分かりそうになかったので、いったん放棄🧹して E の部分点を取りに行く。

小課題 1, 2 ともに一瞬で解法が生えたので、書く。

143:49 ちょっとバグらせてしまったが、なんとか両方の小課題を通して、16 点を得る。

それ以降は一向に分からないし、見るからにヤバそうだったので、C の満点解を取りに行くことを考える。

分からん、なんだこれ、と唸っていると、小課題 1($H=1$ の場合)の約数列挙する方針をうまく二次元に落とし込んでやればいいんじゃね?と思いつく(詳細は ここ)。

鬼のような実装量になりそうだとは思ったが、とにかく書く。

166:03 約 1700 byte を書き上げ、C で満点を獲得。ここでようやく勝ちを確信する

その後 E も考えてみたが、全く分からず。難しすぎる。

本番後

「流石に通っただろ!w」と安心していたが、思っていた以上に満点と同点が多くて若干怖かった。

E の解説を見たら「Undo 可能 Union-Find」みたいな文字列が見えて、泣きながらそっ閉じした。

非公式難易度表の投票で、「C は難易度 5」と主張している人がいて泣いてしまった。流石にそんなことはないと思います

数日後

f:id:NatsubiSogan:20211231113938p:plain
本選に行けるらしい

A ランクでした。(本選 160 人なこともあってボーダーがだいぶ低いですね)

まあ、416 点取っていれば流石に 80 人でも通っていたとは思いますが…

自分含め、同期 6 人が本選行きらしいです(すごい)。本名特定は「出来るもんならやってみてください」という感じです。

頑張ります(いい加減まともに C++ を書けるようになりたい、というかならないといけない)。

体感難易度

3 / 5 / 8 / 8 / (不明)

終戦

A: 100

B: 100

C: 100

D: 100

E: 16

合計: 416 / 500

参考(去年の)

natsubisogan.hatenablog.com

おわりに

足跡、残してぇ~~