プログラミングの為の数学と算数 vol.2
■ このスレッドは過去ログ倉庫に格納されています
0001デフォルトの名無しさん
NGNG語りましょう。TIPS/Q&Aスレです。
0554デフォルトの名無しさん
2006/07/20(木) 07:11:30>>551
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/2409.cpp
方針は以下:
(1) は自明.
(2) はソートして左から数える.ソートしたおかげで単調性が得られ,
一度交わらなくなったらそれより先を調べる必要がなくなる.
(3) は (2) でどこまで調べないといけないかを二分探索を行う.
0555デフォルトの名無しさん
2006/07/20(木) 08:09:59http://sourcepost.sytes.net/sourcepost/sourceview.aspx?source_id=28099
(i) 区間対の個数はO(nn)、重なりの有無の判定はO(1)だから、全体でO(nn)。
(ii) >>554に同じ。
(iii) 与えられた区間の始点と終点を列挙し、ソートし、各点に何個の始点・終点が重なっているか調べる。
区間のネストの数を把握しながらこの列を走査して重なりの総数を得る。
実際のコードでは始点・終点の個数の計算と最後の操作を一つのループで行っている。
■ このスレッドは過去ログ倉庫に格納されています