問題はこちら
問題概要
座標平面上のの4点を頂点とする正方形がある. この平面上に描かれる, 座標軸に平行な線が本与えられる(軸に平行な線が本, 軸に平行な線が本). すべての線は正方形の少なくとも一辺と交差している. 線によって, この正方形がいくつの領域に分割されるか求めよ.思考の流れ
領域が分割されるためには線が垂直に交差する必要がある. 3本以上の線が1点で交差することがないことから, 交点一つにつき, 領域が一つ増えることがわかる. よって, 交点の数を高速に求める必要がある.
回転や反転により同じ問題になるので, 正方形の左から伸びている線と下から伸びている線との交点の数を高速に数える. 左から伸びている線一つを考える(この線をとする). と交わっている線は, 左からの長さ以下の位置にあり, 長さがの高さ(座標)以上であるものなので結局以下の問題に答えることになる.
- 数列のかつとなるの数
これは, 見る順番をソートしてBITを使ったり平衡二分木を使ったりすると解ける. WaveletMatrixを使っても解けるはず.