トップページ⇒tech
1001コメント336KB

プログラミングの為の数学と算数 vol.2

■ このスレッドは過去ログ倉庫に格納されています
0001デフォルトの名無しさんNGNG
プログラムに必要な数学、算数に関する話題について
語りましょう。TIPS/Q&Aスレです。
0554デフォルトの名無しさん2006/07/20(木) 07:11:30
550 じゃないが

>>551
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/2409.cpp

方針は以下:

(1) は自明.
(2) はソートして左から数える.ソートしたおかげで単調性が得られ,
  一度交わらなくなったらそれより先を調べる必要がなくなる.
(3) は (2) でどこまで調べないといけないかを二分探索を行う.
0555デフォルトの名無しさん2006/07/20(木) 08:09:59
拙いPerlですが。
http://sourcepost.sytes.net/sourcepost/sourceview.aspx?source_id=28099

(i) 区間対の個数はO(nn)、重なりの有無の判定はO(1)だから、全体でO(nn)。

(ii) >>554に同じ。

(iii) 与えられた区間の始点と終点を列挙し、ソートし、各点に何個の始点・終点が重なっているか調べる。
区間のネストの数を把握しながらこの列を走査して重なりの総数を得る。
実際のコードでは始点・終点の個数の計算と最後の操作を一つのループで行っている。
■ このスレッドは過去ログ倉庫に格納されています