結果
E問題までの5完で365位。変な勘違いばかりして解くのが遅く、全然ダメだった。
A問題
すっきりとしたやり方がわからなくて結局std::map
に各文字の出現回数を詰め込むというオーバーキル気味なことをやった。解説PDFにあるソートして比較が一番スマートなのかな。
B問題
いつも開始直後は問題の読み込みが遅くて、B問題から解き始めれば回避できるのかなと思ってこちらから解き始めたがあまり違いはなかったか。
C問題
ソートして切れ目を考えるだけ。ちゃんと考えを詰めきってから短いコードを書くようにできたのでそこは良かったと思う。ここまではそこそこ順調だったんだけど……。
D問題
「同じ色のボールは区別が不可能」という文字を目は認識していたのに脳は認識してくれなくてずっと区別できる状態での解法を考えていた。区別できる状態での解法をひねり出すのにも時間がかかり、実装したら全然サンプルが合わないところでようやく気付いてまた考え直してということでひどかった。こんなのコンビネーション計算するだけなのに時間をかけてしまい、順位がめちゃくちゃ悪くて冷や汗が出始める。
E問題
まず有向グラフだということに気づいていなくて時間がかかり、その後もその混乱を引きずって隣接にはコスト1で行けると思い込んだままよくわからない解法を考え続けていた。残り27分くらいのタイミングで一度落ち着こうと思って問題文を眺めなおすと頂点を拡張するいつものダイクストラということがわかってようやく解けた。これがすぐ見えないのは完全に練習不足。提出時点でE問題を解いている人の数がめちゃくちゃ多くて冷えていたけど、ノーペナだったおかげか意外と順位はひどいことにならなくて軽傷で済んだのは良かった。
F問題
のDPを書いてじっと睨んでいたが残り10分ちょいでは全然見えてこなくて終了。解説PDFを読んで、まぁそれはそうだと思ったけどこれを本番中に思いつける気がしない。実装も難しくて割った数でまとめる際にその数に何個なるかを事前計算しておかないと扱いきれない抽象度だった。難しい。