ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

[ds 记录]abc263ex Intersection2

2022-08-11 13:04:21  阅读:157  来源: 互联网

标签:abc263ex 原点 线段 给定 端点 区间 Intersection2 转为 ds


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

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

将直线转化为圆的弦,再将弦的端点用圆心角表示以加以离散化,问题变成了:给定若干个区间 \([l_i, r_i]\),有几对区间 \([l_i,r_i]\) 与 \([l_j,r_j]\) 满足 \([l_i,r_i] \cap [l_j, r_j] \neq \varnothing\)。

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

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

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

标签:abc263ex,原点,线段,给定,端点,区间,Intersection2,转为,ds
来源: https://www.cnblogs.com/purplevine/p/16575656.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有