NOMURA2020

2完。頭が苦しい。

A - Study Scheduling

繰り下がりを考えたが、単に時と分をそれぞれ引き算するだけでいいと気づいた。この問題文を読むのはかなり大変だが、起きてる時間からK分を引けば答え。

B - Postdocs

問題文やサンプルを見ていると、どうしても「DP」という文字列が目に入ってくる。DPで解けるのか気になるけど、まあフラットに問題を考えていく。ある'?'に'P'を入れたときの「博士・PD 指数」(この名称長すぎん?)への寄与と'D'を入れたときの寄与を考えると、'D'を入れれば1(以上)増えることに気づく。一方、'P'を入れても"D"は増えないし"PD"が高々1増えるだけ。ということで、'D'を入れて損しない。'?'を'D'に変えればいいので実装は簡単。

C - Folia

なんか脳が働かなくなった。よくあるじゃん漫画とかで。ロボットが難すぎる問題を与えられてショート(?)するの。

葉の数はわかっているので、その葉たちの親の個数の範囲を考える。最大値っていうけど、要するに誰かの親であるようなノードの数をどこまで増やせるかという話だ。しかし、N+1種類の深さのうち、深さ0と深さNの2つも特殊なものがあるので厳しい。上と下から攻めて値が確定するようなイメージでかなり難しそう。まず上から考えて、できるだけ多くの子を作り葉をA_i個以上にできるか判定する。できるなら、下から不要なものを削除していけばちょうどA_i個にできるはず。どれだけ削除すればいいかは、削除対象である親の数とその子の個数の最大値でわかる(子が少ないときは子は1個だけにするのがよさそう)。親の数とか具体的に何なのか無限に混乱した。そのままだとノード数がO(2^N)になるのでA_iの最大値の何倍かくらいで切る。それだけあれば次の子を作らせてもまだ大量に残るので(どうやらここが間違っていたようだ(子を2個にしているが、存在判定はそれでできても最大化のためには子を1個にする必要がある場合がある))。

頑張って実装してやや遅くなったが提出してWA。何度見直しても正しい。考察は正直そんなに自信なかったが、考え直すと正しいようにしか思えない。ということで虚無デバッグで終了した。これはつまらない。解けないのは仕方ないとして虚無の時間が長すぎる。最近ARC格が少なかったから「2年前の自分はARCをもっと楽しめばよかったのに」とか思ってたけど、こういうことね。これは楽しめない(毎回こうだとは思わないけど、こういうのが多いのはかなり厳しい)。