9月28日(水)

起きたのは9時ごろ.昨日解けなかった#797div3のG問題を考えていた.前日の時点ではdp[i]=iからtrainをはじめたときの連結の個数,と定義すればできそうだと思っていたが実装がクソだるになりそう.もうちょっといい方針がないかとずっと悩んだ挙句,trainの数は1ずつしか増えないことに気付いた.つまり,trainの先頭を全部保持して1回ずつ更新しても2*n回くらいに収まる.multisetをつかって解けた.

13時ごろまではゲームをして,昼は焼きそばを作って食べた.14時くらいになってシャー芯がなくなっていることに気付いてロフトに買いに行った.近くに文房具屋がないのが非常に不便である.

帰って15時30くらいからdiv3をまた解き始めた.A-Dは言うことなし.E問題は大方の方針はすぐ出てきたのだが詰め切るのが少し難しい.隣り合う壁を壊す場合について,大きいほうが小さいほうの2倍以上だったらずっとそっちを壊し続けた方がいい.そうでないときは,いずれ同じ値になるタイミングが来て,そこからは3つずつ減らしていける.F問題が簡単だった.G問題は少しムズイ.トポソしたあと直線になりそうだなとおもいつつも変な方向に行ってしまった.冷静に考えると,最適な集合をトポソに写した時,その順番に辺が伸びていないといけない(直線になってないといけない).よって,dp[i]を定義すれば順番に行ける.

永遠に前刷りが返ってこない.まじで怒らせてしまっている気がする笑.