5完。Eまで早解きする価値は、パフォではなくFを考える時間を得ること。
A - Compromise
こういうの簡単だけど瞬殺するにはけっこう怖いよな。ギリ1分切れたのはえらい。
B - Representative Balls
初期値を-1にするのは思いつくけど、なんかずるいというか不安になる。まあ正しいのでそれでいいんだけど。
C - Count Close Pairs
これD問題だろ。まあしゃくとりを思いつく難易度がCで、インタラクティブ成分もC相当なら、合計でCということか。ただ、インタラクティブで威圧された状態でこのしゃくとりは相当見えづらい。紙に描いて考えてようやく見えた。[i0, i1)でやっていて、i1をi0より大きくする処理を入れて見覚えがないので不安になったが、通常のしゃくとりなら自分との距離は1以下だからその処理は不要だし、そもそも区間の長さが0になることは一般のしゃくとりならありえる。1を引いたときも不安になったが、今考えると距離が1以下になる空でない区間の個数ではないからだ(1個のみからなる区間は数えない問題設定)。質問回数は、最初不安だったけど提出時には忘れていた(カス)。[0, 1)から[N-1, N)まで左右片方1ずつ増えるから2*N回よりは少ない。コードを見て「N回程度で済むのでは?」と思ったけど、右が進まないこともある。しゃくとりのコードって意外と左右対称。
しゃくとりを思いついてすぐ、二分探索を封じてあることに気づいて、いい問題だと思った。まあ二分探索が許される設定でもやるのは難しそうだが。
D - Placing Rooks
どの行にもどの列にも高々1個のコマしか置かれることはない。mapを使って相互監視するやつかと心配したけど、よく考えるとvectorでいける。各行(各列)についてコマがなければ-1、あればその位置を持つ。これはちゃんと更新できるのだが、怖かったのがちょうどコマがある位置に操作した場合。まあちゃんと考えれば大丈夫なんだけど不安だった。
解説の解法1、これは難しい。仮に思いついても提出できるほどの確信を持てない気がする。
E - Range Flip
(左端は表として)表を使うか裏を使うかの切り替わり場所はK*2箇所しか作れない(これは区間の端が2個しかないから当たり前だけど、コンテスト中は多くの例を試すしかできてなかった)。そしてK*2箇所は端からそこに合わせて区間を置けば簡単に作れる。そこからは、E問題とは思えないクソ簡単なDP。
F - Many Mod Calculation
forでも書ける再帰というのが最初のイメージ。ただ、少し考えると普通に前からという感じに。Aは狭義単調減少としてよい。f(0)=0なので、0以上X以下で求めて1を引けばいい。最初、[0, X]が1個ずつという状態。個数が同じものをまとめて、いくつかの区間で表す。区間はけっこう増えそうに思える。上ちょっとしか削れないとしても区間はたくさんあるかもしれない。階段状になったものを、切って重ね直す。そもそも、2乗でいいと言われても実装がむちゃくちゃ難しそう(結局何もできないなら2乗の実装に挑戦するべきだったか)。でっかく削れる(半分になるとか)のはO(log(X))回なのでそこで毎回O(N)かかるのはいい。ただ、Xは大きいし、区間が増えてからちまちま(今気づいたけどこれが半分以下になるのか!)削られるとわからない。解ける見た目はしているが、自分から見える解法では解けていないようにしか思えない。逆からやるのも、不規則になったものが積み重なっていくので、無理に見える。何もできずに時間が過ぎ、終了3分前くらいに撤退した。解説見てもなんもわからん。