竹園論壇
標題:
[排序]1205 - 直角三角形
[打印本頁]
作者:
Sylveon
時間:
2015-2-24 20:19
標題:
[排序]1205 - 直角三角形
原題:
http://tioj.ck.tp.edu.tw/problems/1205
AC:
http://tioj.ck.tp.edu.tw/submissions/10046
我不大曉得這題如何分類,就把比較關鍵的一步拿來當作TAG了。
隨便想應該都能想出個[tex]O(N^3)[/tex]的爆解。這裡的想法是考慮直角三角形直角的兩個夾邊互相垂直(廢話),如果我們能拔一個點能產生出的所有斜率排序,那我們又能很快地找出另一互為垂直的斜率有幾個。
關鍵在於處理斜率,鉛直線和水平線如何處裡呢?索性定義一個分數類別 ( 其實就一直把pair拿來用 ) ,使水平線為[tex]{0,1}[/tex],鉛直線為[tex]{1,0}[/tex],然後稍微維護好資料就可以。ㄗㄨㄟ用
sort
+
equal_range
來到處加一加,最後答案要除以二 (一個三角形被算到兩邊) 排序後各操作複雜度為 [tex]O(N^2logN)[/tex] 本題沒說測資有多少... 反正就是過了
053.PNG
(41.94 KB, 下載次數: 22)
下載附件
2015-2-24 20:17 上傳
[sojcodepad]f5bf26e3[/sojcodepad]
歡迎光臨 竹園論壇 (http://forum.tfcis.org/)
Powered by Discuz! X3.2