Entries

スポンサーサイト (この記事を編集する[管理者用])

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。

コメント

コメントの投稿

コメントの投稿
管理者にだけ表示を許可する

トラックバック

トラックバック URL
http://rsujskf.blog32.fc2.com/tb.php/1304-6163bf81
この記事にトラックバックする(FC2ブログユーザー)

SPOJ 6578 - Segment Tree [SEGTREE] (この記事を編集する[管理者用])

Source

RAU School Contest 2010
SPOJ 6578 [SEGTREE]

問題概要

2次元上のn個の点が与えられる.
それをノードとして,根付きを作る.
ノードaからノードbへ枝を張るには,ノードbがノードaより厳密に上(y座標が大きい)にないとダメ.
枝の距離の最小値を求める問題.
ただし,回転して良い.

解法

(ルートを除けば)各ノードに入ってくる枝は,自分より下のあるノードのうち一番近いノードからはれば良い.
ということで,自分より下にあるノードまでの距離を全部ヒープに突っ込んでおく.
回転して,ノードの上下関係が変わると,その時ヒープをいじる.
ヒープをいじる回数はO(n^2)で,いじったときO(log n)かかるので,O(n^2 log n)で解ける.

コメント

コメントの投稿

コメントの投稿
管理者にだけ表示を許可する

トラックバック

トラックバック URL
http://rsujskf.blog32.fc2.com/tb.php/1304-6163bf81
この記事にトラックバックする(FC2ブログユーザー)

Appendix

Recent Articles

ブログ内検索

Ads


(プライバシーポリシー)
上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。