Get the Salary of Atcoder(square869120Contest #4 [G])

スポンサーリンク

概要

問題文 →
公式解説 → , p.86
自分の提出 →

解法

Euler Tour をとって、Euler Tour における頂点順を x 座標、木における深さを y 座標と見なすことで、次のクエリ処理に帰着できます:

  • 矩形領域内のデータ点に対して、v を加算する
  • 矩形領域内のデータ点の値の総和を求める
  • データ点を追加する

これが 1 次元の区間クエリだと、遅延セグメント木でできます。2 次元の矩形クエリでも、kd tree を用いると今回の矩形クエリを処理することができます。kd tree による矩形クエリは点の個数の 1/2 乗の時間計算量で行えて、本問題は O(N+QN+Q) 時間で解くことができます。

参考文献:https://trap.jp/post/1489/

kd tree による遅延伝播の verify 問題としてもちょうどいい気がします。

タイトルとURLをコピーしました