ABC304

5完。Aが難しすぎるし問題文が読めない時間があったしFを理解する能力がないしジャッジが終了直前に終わるし。体調はよかったと思うが。まあunratedだよね、正直ほっとしたけど、Fに関する実力が低かったことには変わりない。はあ。

A - First Player

文字列だけ記録しながら最小値とその位置を求めて、その位置から出力していく。難しすぎる。A問題は既出でいいと思うんだけどな。

ビルド時刻が21:02:20で提出時刻とされているものが21:03:26なので、提出ボタンを押してから1分くらいかかったことになる。今日は印刷用へのリンクないなあと思ってて開き忘れてB問題を読むまで1分くらい虚無を過ごした。

B - Subscribers

言われた通りループしたけど、先頭3文字はなるほどね。

C - Virus

同値関係なのでUnionFindで人1と同じか判定。整数でできる。

D - A Piece of Cake

ピースがめちゃくちゃ多くてこんなのできんのって思ったけど、トイレ行ったらイチゴ視点を思いついて解けた。lower_boundを2回でどのピースか求めてunordered_mapでカウント、最小が0個の場合に注意。

E - Good Graph

永続UnionFindを思うが、よく考えると必要ない(過学習っぽい)。最初のグラフでUnionFindして連結成分に分かれた状態から、x,yがどの連結成分とどの連結成分をつなぐか求めて頂点番号の大小で正規化してからunordered_setに入れておく。追加した辺のつなぎ方がunordered_setに入ってるかで判定。

F - Shift Table

約数包除っぽい。Mを固定した場合は青木君が出勤する必要があるところを埋めて数えればいい。約数は最大で128個、素数の約数は最大で7個。約数で考えるの全然ひらめかなかったんで素数に行った。含んでる周期は考えなくていいから素数だけでよさそう。2^7通りやって包除。自由度は周期のぶん減ることに気づいてなかった。ある素数pを使うとき、周期pと周期N/pがあることは認識していたが、間違ったまま進んでしまった。ジャッジに時間がかかって2WAしかできなかったけど、最小公倍数にしたところ自由度間違ってる気がする。なんか知らんけどマジで苦手というか何も見えない問題だった。

(追記)最小公倍数じゃなくて最大公約数でよかったんだ。pとN/pで混乱してたから逆になってしまった。そもそもこれを正面から考える胆力がないのがまずいなあ。約数の高速ゼータ変換をちょっと思って、イメージが重ならないから怖くて離れてしまった。Mとしてmを取ったとき、mの約数から生成されるパターンを全て含んでいる、ということすら考えていなかった(コンテスト中に採用した方針(そもそも計算量不明だったな)だと考えなくていいため)。何を求めるか悩んでいたけど、解説にある「最小周期」だった。依存関係が複雑に見えるが、DAGなので小さい順にやっていける。Nの約数でないところからも引き算しちゃう実装にしたけど、ここは簡単に書けたもののヤバさを感じる。Nの約数限定で間が抜けてるから高速ゼータ変換みたいには(そのままだと)できないっぽい。

G - Max of Medians

むずそう。

Ex - Constrained Topological Sort

少し考えてトポロジカルソートじゃねって思って問題名見るとそう書いてあるのよくやる。