ICode9

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

CF257C题解

2022-05-20 16:00:24  阅读:155  来源: 互联网

标签:原点 CF257C 题解 最大值 leq 角度 夹角 部分


题面

Description:
平面上有 \(n(1\leq n\leq 10^5)\) 个点。你要从原点引出两条射线,将平面分成两个部分,保证其中一个部分覆盖了所有的点。问这个部分与原点所夹的角的最小度数。


正难则反。我们可以把问题转化为求一个部分不包含所有的点,问这个部分在原点的角度最大值。
用贪心的思想,这个部分的两条射线肯定要经过点,否则一定不是最优。而且,这两个点之间不能有任何点。所以,我们可以把点的坐标转化为角度。这样的话,我们要找的两个点在把角度排序后一定相邻。因此,我们把角度排序,每一次找相邻的两个点的夹角,不断更新最大值即可。最终的答案就是 \(360^\circ\) 减去这个最大值。注意第一个点和最后一个点夹角的处理。

在数学库中,\(\operatorname{atan2}\) 函数可以方便地求出 \(\arctan(\dfrac{y}{x})\) 的值。注意传参进去的时候先纵后横,并且出来的值是弧度。你可以用 \(\operatorname{atan2}(y,x)\times180\div\pi\) 得到经过点 \((x,y)\) 和原点的射线与 \(x\) 的夹角度数。

代码

标签:原点,CF257C,题解,最大值,leq,角度,夹角,部分
来源: https://www.cnblogs.com/1358id/p/16292584.html

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

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

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

ICode9版权所有