“一切都会好起来的。”|

zplqwq

园龄:3年10个月粉丝:25关注:14

📂题解
🔖数学
2021-09-23 08:56阅读: 100评论: 0推荐: 0

题解 CF1C Ancient Bearland Circus

计算几何。

我终于可以做这种题了啊。


首先我们断言:给定三点的正多边形面积最小当且仅当正多边形的顶点都在给定三点构成的三角形外接圆上。

题目给了三点坐标,那么可以求出三边长,之后不难想到要用海伦公式。

p=12(a+b+c)

SΔABC=p(pa)(pb)(pc)

接着用外接圆半径公式。

R=4SΔabc

然后就可以求出圆心角度数,取一个最小公倍数,设为 k,那么最后答案是 πR2sinkk

最后注意控制一下精度,取 1e-2 其他的精度会出问题。

放一下主函数的代码。

for(int i=0;i<3;ans+=len[i],i++)
{
len[i]=dist(i,(i+1)%3);//dist求距离
}
ans/=2;
ret=sqrt(ans*(ans-len[0])*(ans-len[1])*(ans-len[2]));
kawaii=len[0]*len[1]*len[2]/(4*ret);
a[0]=acos(1-len[0]*len[0]/(2*kawaii*kawaii));
a[1]=acos(1-len[1]*len[1]/(2*kawaii*kawaii));
a[2]=2*pi-a[0]-a[1];
ans=gcd(a[0],gcd(a[1],a[2]));
printf("%.6lf",(pi*kawaii*kawaii*sin(ans))/ans);

本文作者:zplqwq

本文链接:https://www.cnblogs.com/zplqwq/p/15322670.html

版权声明:本作品采用知识共享署名-非商业性使用-禁止演绎 2.5 中国大陆许可协议进行许可。

posted @   zplqwq  阅读(100)  评论(0编辑  收藏  举报
评论
收藏
关注
推荐
深色
回顶
收起
点击右上角即可分享
微信分享提示