hideseek - かくれんぼ (Hide-and-seek) 解説 by Mitsubachi


\(\left( x,y \right)\) が隠れ場所としてありえるのは、 \(\left( x,1 \right) , \cdots , \left( x,y-1 \right)\) の中で障害物の数を \(z\) として攻撃力が \(z\) までの敵に対してです。

よって、 \(y_i\) が昇順であるとして障害物を順に配置していくとき、その \(x\) 座標には既にいくつの障害物が置かれたかを管理しつつ更新するデータ構造があればこの問題を解くことができます。

これは範囲変更クエリ、範囲取得クエリが可能な遅延セグメント木などのデータ構造を用いることで実現できます。計算量は \(O(N \log N)\) です。

投稿日時:
最終更新: