5完。26:55は自己ベストだったらしい。
各問題
A - Edge Checker
1から順に並んでいるので、差が1なら隣同士です。ただし、例外として1と10も隣同士であることに注意。
B - Count Distinct Integers
setに突っ込んでサイズを答えます。Aより楽。
C - Jumping Takahashi
柱とかカエル飛びの問題のようなシンプルな1次元DPをすればよいです。答えるのは最後までジャンプした後の位置であることに注意です。途中でXに到達してもそれは無効です。
D - Strange Balls
やり方はいろいろありますが、例えばdeque<pair<int, int>>
で「何番」が「何個」積まれているかを管理していけばできます。積まれている総数は別途管理しておきます。
E - Ranges on Tree
問題文の解読に時間をかけてしまいましたが、読み解けると実はかなり簡単で、葉に端から番号を順番に振っていって各点が含んでいる葉の番号の範囲を[R, L]
とする、という問題です。木のDFSが書ければE問題としては特に難しいことはないかと。
F - Sum Sum Max
等差数列の和さえ求まれば、各範囲の終了時点の状態を取ることはできて、あとは範囲内の状態がどうなっているかなんですが、これが求めきれず・・・。
三分探索かー。それはそうすぎる。
まとめ
5完速度自己ベストで久しぶりの青パフォあるかと思いましたが、残念ながら1500台。いやこの速さ(早さ)で青行かないのはきつい・・・。