ARC100 B - Equal Cut

2019-05-15

chokudai さんの で、 青色の半数が一時間でとける問題と紹介されていたもの。

累積和が使えそうなことと、まず LとRにわけて、さらにそれぞれを2つにわけるんだろうなぁというところは、 なんとなく想像がついたのだけど、そこから、方針たてられなかった。

最初の L と R を分けるのに等分するのかなぁと考えたのだけど、それについては、自分で反例を思いついてしまって、 そこで行き詰まり、解説読み。

なるほど。LとRを分ける位置について、すべて探索(O(N))、分けたあとに、それぞれまた O(N) だとダメなんだけど、 そこで、LとRを分ける位置 (i) が動くにつれて、つぎの分割 (j, k) の位置も一方向にしか動かないことを利用する。 (さらに、j, k それぞれ全探索せずに、凸であることを利用するとかかな)

解説読んで、自分で書いたのが これ

もっと上手に書けるべきだろうし、他の人のやつ読んで勉強しないといけないんだろうけど。ひとまず今日はこれで。