[ds 记录]abc263ex Intersection2

题意:给定 n 条线,求两两交点与原点距离的第 k 远值。

直接做很难,转为二分答案。现在,需要解决:给定 n 条直线,这些线在圆心原点半径为 k 的圆中有几个交点。

将直线转化为圆的弦,再将弦的端点用圆心角表示以加以离散化,问题变成了:给定若干个区间 [li,ri],有几对区间 [li,ri][lj,rj] 满足 [li,ri][lj,rj]

考虑将区间端点做排序,用线段树维护,一个个扫过去,如果是左端点,就在线段树上查询该区间内的其它的右端点数,如果是右端点,就在线段树上更新。这样能做到 O(nlogn)

将问题转为判定是一步重要的转化,此后转为区间问题是对问题本质的精准提取。感觉这题并没有一般的 abc ex 那么难,或者说,难点在于计算几何的计算,但是因为位置原因,赛时一直没敢开。

代码留坑罢,等学点计算几何再说。

作者:purplevine

出处:https://www.cnblogs.com/purplevine/p/16575656.html

版权:本作品采用「署名-非商业性使用-相同方式共享 4.0 国际」许可协议进行许可。

posted @   purplevine  阅读(41)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 25岁的心里话
· 闲置电脑爆改个人服务器(超详细) #公网映射 #Vmware虚拟网络编辑器
· 零经验选手,Compose 一天开发一款小游戏!
· 因为Apifox不支持离线,我果断选择了Apipost!
· 通过 API 将Deepseek响应流式内容输出到前端
more_horiz
keyboard_arrow_up dark_mode palette
选择主题
点击右上角即可分享
微信分享提示