AGC044

0完(NoSub)。AとBを交互に考えていたが解けなかった。今日という日を楽しみにしていたが、AGCを楽しみにするのは思い上がりだったし、だからってAGCが楽しみじゃない人生は無なので、この人生はおしまいです。

A - Pay to Win

操作は逆にもできる。操作回数はO(log(N))でそんなに多くない。逆に考えたとき、5で割るには5の倍数になるまで増やすか減らすか。もっと離れた5の倍数にする意味はなさそう(割ったあとで動かした方がいいので)。Nが10000くらいまでならDPできるよなと思って書いてみたが、だから何。Dだけ極端に小さい場合が危険そう。10^8まで増やしてそこから3倍するとか。割る操作を続けて最後に-1の連続で減らすという順序のはずで、-1の部分は簡単なので、割る回数ぶんくらいの遷移でダイクストラ法とかできる?計算量がわからない。いきなり1/2や1/5になるから到達しうるノード数はNよりだいぶ少なそうなのにexp(log(N))(つまりN)くらいとも思える(パスカルの三角形のようにけっこう合流するのを見落としていた(だからといって計算量はわからないが))。書けば通るような気もしたが、この時点で残り1時間とかで、レーティングのことを考えるとB問題に注力するしかないところ。計算量がわからないのに、コンテスト中の時間を使って書く気にはならなかった(書くのも時間かかりそうだった)。

B - Joker

空席ができたことにより退出コストが減る範囲は広いのでさすがに愚直は無理。セグ木みたいので効率化できないか?さすがに形が複雑すぎるかなあ(よくイメージできてない)。空席はUnionFindで扱えそう。しかも、いなくなった人のコストがそのままその空席塊からのコストになる。逆から考えることもできて、人を入れていく。順方向と逆方向の情報を上手く合わせてできないかと考えていたが、何も考えてなかった。わからないことを2時間も考え続けると気持ち悪くなってくる。集中もできないし。スピードがないからどこへも行けない(スピードこそが質に直結するんよ)。思考をばらけさすことができない。コンテスト後、初期状態のコストの総和がO(N^3)なの気づいてなくてほんとひどいと思った。