首页 > 其他分享 >CF1C Ancient Berland Circus

CF1C Ancient Berland Circus

时间:2022-08-30 15:11:38浏览次数:61  
标签:Ancient frac angle double Circus CF1C triangle pi sin

给定 \(3\) 个点,求以这 \(3\) 个点为顶点的正多边形面积最小值。


先以这张图为例,首先可以肯定圆的半径是确定的。

根据秦九韶公式,有 \(S_{\triangle ABC}=\sqrt{p(p-a)(p-b)(p-c)},p=\frac{a+b+c}{2}\) 。那么就可以求出三角形面积。

因为 \(S_{\triangle ABC}=\frac{ab\sin C}{2}\) ,三角形外接圆半径 \(R=\frac{c}{2\sin C}\) (正弦定理)得到 \(R=\frac{abc}{4S_{\triangle ABC}}\) 。

当内接圆 \(R\) 一定时,只有当多边形边数小时才能使面积小,若求出 \(\angle AOB,\angle AOC,\angle BOC\) (注意,这里的三个角并不都小于 \(180^{\circ}\) ,而是满足三角相加等于 \(360^{\circ}\) ),那么求出他们之间的 \(gcd\) 得到的角度 \(t\) 就是满足条件的最大角度(即 \(\frac{2\pi}{t}\) 边形),最后求多边形面积就是 \(\frac{2\pi}{t}\) 个面积为 \(\frac{R^2\sin t}{2}\) 个三角形面积之和,所以答案就是 \(\frac{\pi R^2\sin t}{t}\) 。

问题来到了如何求出三个角的度数,根据余弦定理可得 \(\cos A=1-\frac{a^2}{2R^2}\) ,其他同理。

#include<bits/stdc++.h>
using namespace std;
double Pi=acos(-1.0),esp=1e-2;
double ax,ay,bx,by,cx,cy,p,s,abl,acl,bcl,r,t,aa,bb,cc;
double gcd(double A,double B){
    return ((fabs(B)<esp)?A:gcd(B,fmod(A,B)));
}
int main(){
    scanf("%lf %lf %lf %lf %lf %lf",&ax,&ay,&bx,&by,&cx,&cy);
    abl=sqrt((ax-bx)*(ax-bx)+(ay-by)*(ay-by));
    acl=sqrt((ax-cx)*(ax-cx)+(ay-cy)*(ay-cy));
    bcl=sqrt((cx-bx)*(cx-bx)+(cy-by)*(cy-by));
    p=(abl+acl+bcl)/2.0;
    s=sqrt(p*(p-abl)*(p-acl)*(p-bcl));
    r=(abl*bcl*acl)/(4.0*s);
    aa=acos(1-(abl*abl)/(2.0*r*r));
    bb=acos(1-(acl*acl)/(2.0*r*r));
    cc=2*Pi-aa-bb;
    t=gcd(aa,gcd(bb,cc));
    printf("%lf\n",(Pi*r*r*sin(t))/t);
}

标签:Ancient,frac,angle,double,Circus,CF1C,triangle,pi,sin
From: https://www.cnblogs.com/zhouzizhe/p/16639280.html

相关文章

  • CF1719B Mathematical Circus
    题链:cfluogu分类讨论思想。Description把\(1\)到\(n\)共\(n\)个整数分成\(\frac{n}{2}\)对有序数对\(\left(a_i,b_i\right)\),则对于\(\forall\left(a_i,......
  • CF1719B Mathematical Circus 题解
    一道不错的构造题。思路先说一句废话,能被\(4\)整除的数在除以\(2\)之后得到的数还是一个偶数。我们可以根据\(k\)的奇偶性以及\(k\)除以\(2\)之后的奇偶性分......
  • CF1719B Mathematical Circus
     题意简述:对于给定的$n,k$,能否将$1,2,3,...,n$($n$为偶数),两两分组.求对于每个分组($x_i$,$y_i$),是否全部满足$4\mid(x_i+k)*y_i$,如果分组全部......