码迷,mamicode.com
首页 > 其他好文 > 详细

Problem. Q

时间:2020-05-22 22:56:06      阅读:94      评论:0      收藏:0      [点我收藏+]

标签:枚举   强制   凸包   The   class   平面   二分   最优   lambda   

题意简述:

给定\(c\)个正实数\(r_i\),你需要在平面直角坐标系上构造\(c\)个点,满足第\(i\)个点到原点的距离恰好是\(r_i\),且这\(c\)个点构成的凸包面积最大。

数据范围:

\(c\le8\)

解法:

先强制一些点在凸包上,然后再枚举它们的圆排列顺序,计算此时的最优解,不难证明这样一定不会优于最优解且最优解一定会被枚举到。
设现在有\(n\)个点\(a_1,\cdots,a_n\),满足\(|Oa_i|=r_i\),设\(\theta_i=<\vec{Oa_i},\vec{Oa_{i+1}}>\)
显然原点一定在最优解的凸包内,所以此时凸包的面积为\(f=\sum\limits_{i=1}^nr_ir_{i+1}\sin(\theta_i)\)
我们有限制\(\sum\limits_{i=1}^n\theta_i=2\pi\),根据Lagrange乘数法,此时取到最优解的充要条件是\(\forall i\in[1,n],r_ir_{i+1}\cos(\theta_i)=\lambda\)\(\theta_i=\arccos(\frac{\lambda}{r_ir_{i+1}})\)
因为\(\arccos\)\([0,1]\)内单调,因此我们可以二分出让\(\sum\limits_{i=1}^n\theta_i=2\pi\)\(\lambda\)然后求出此时的面积。

Problem. Q

标签:枚举   强制   凸包   The   class   平面   二分   最优   lambda   

原文地址:https://www.cnblogs.com/cjoierShiina-Mashiro/p/12940244.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!