description

analysis
-
二分一个角度,首先假设该弧度角θ∈[π2,π]\theta \in[{\pi \over 2},\pi]θ∈[2π,π],要找的直线斜率k∈(−∞,tanθ]k\in(-∞,\tan\theta]k∈(−∞,tanθ]
-
要找这种直线,两个点(xi,yi),(xj,yj)(x_i,y_i),(x_j,y_j)(xi,yi),(xj,yj)构成一条直线,先钦定xi≤xjx_i≤x_jxi≤xj
-
直线斜率yj−yixj−xi≤tanθ{ {y_j-y_i}\over{x_j-x_i}}≤\tan\thetaxj−xiyj−yi≤tanθ,转化后变成yj−xjtanθ≤yi−xitanθy_j-x_j\tan\theta≤y_i-x_i\tan\theta

这篇博客介绍了一种利用树状数组解决二维偏序问题的方法,具体场景是计算在特定角度下,直线斜率小于某个值的直线条数。通过二分角度并转换条件,将问题转化为寻找点的相对位置,然后利用树状数组进行快速更新和查询。在二分查找过程中,需要注意区分斜率为正和斜率为负的情况,以及计算点的左右上角点个数。
最低0.47元/天 解锁文章
556

被折叠的 条评论
为什么被折叠?



