Entries

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

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

コメント

コメントの投稿

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

トラックバック

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

UVa 12322 - Handgun Shooting Sport (この記事を編集する[管理者用])

Source

XXV Colombian Programming Contest, The 2011 Colombia - XXV Maraton Nacional de Programacion ACIS / REDIS 2011 (2011-10-09)
UVa 12322

問題概要

原点にレーザー砲発射装置がある.
y座標が正の範囲に,線分がB個 (1000以下) ある.
すべての線分を撃ちぬくために打たなければいけないレーザー砲の回数の最小値を求める問題.
レーザー砲は線分を貫き,線分に接しただけでも撃ちぬいたと考える.
それぞれの線分は,原点から見たときに,点に見えない.(x1*y2!=x2*y1)

解法

Greedy.
まず,各線分に対して打ち抜ける角度の範囲を求めておく.
残ってる線分のうち,撃ったときに,左に外れるものが存在しないような,最も右の位置で撃つ,を繰り返す.
ソートして,左からなぞることでO(B log B).
サイズが小さいのでO(B^2)も通るのかもしれないけど微妙.

コメント

コメントの投稿

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

トラックバック

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

Appendix

Recent Articles

ブログ内検索

Ads


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