[nowcoder5667K]Keyboard Free

不妨设$r1le r2le r3$,令$f(alpha)=E(S_{Delta}ABC)$,其中AB坐标分别为$(r_{1},0)$和$(r_{2}cos alpha,r_{2}sin alpha)$,C在原点为圆心、$r_{3}$为半径的圆上,那么有答案$ans=lim_{ntoinfty}limitsfrac{sum_{i=1}^{n}f(frac{2pi i}{n})}{n}$,而由于答案误差可以较大,因此n取1000左右即可
考虑求$f(alpha)$,可以求出$l=|AB|=sqrt{(r_{2}cosalpha-r_{1})^{2}+(r_{2}sin alpha)^{2}}$,作$CHperp AB$交AB于点H,那么有$f(alpha)=frac{lcdot E(CH)}{2}$
考虑求$E(CH)$,延长AB交最大的圆于点D,作$OEverb|//|AB$交最大的圆于点E交CH延长线于点H',那么根据这些可以求出$beta=angle DOE=angle ADO=arcsin frac{r_{1}r_{2}sinalpha}{r_{3}l}$,$h=HH'=r_{3}sinbeta$,然后对$gamma=angle COA-angle DOA$分类讨论:
1.$betale gamma< pi+beta$,那么$E(CH)=begin{equation*}int_{0}^{pi} h+r_{3}sin(gamma-beta)  rm d(gamma-beta)end{equation*}=pi h+2r_{3}$
2.$pi+2beta le gamma<2pi$,那么$E(CH)=begin{equation*}int_{beta}^{pi-beta} (r_{3}sin (gamma-beta-pi)-h)  rm d(gamma-beta-pi)end{equation*}=2r_{3}cosbeta-(pi-2beta)h$
3.$0le gamma<beta$或$pi+betale gamma<pi+2beta$,那么$E(CH)=2begin{equation*}int_{0}^{beta} (h-r_{3}sin (beta-gamma))  rm d(beta-gamma)end{equation*}=2beta h+2r_{3}(cosbeta-1)$
综上,$E(CH)=frac{(pi h+2r_{3})+(2r_{3}cosbeta-(pi-2beta )h)+(2beta h+2r_{3}(cosbeta-1))}{2pi}=frac{2beta h+2r_{3}cosbeta}{pi}$,代入即可得到$f(alpha)=frac{l(beta h+r_{3}cosbeta)}{pi}$

[nowcoder5667K]Keyboard Free

 1 #include<bits/stdc++.h>
 2 using namespace std;
 3 #define pi acos(-1.0) 
 4 int t,r1,r2,r3;
 5 double sqr(double a){
 6     return a*a;
 7 }
 8 double f(double a){
 9     double l=sqrt(sqr(r2*cos(a)-r1)+sqr(r2*sin(a)));
10     double h=r1*r2*sin(a)/l;
11     double b=asin(h/r3);
12     return l*(b*h+cos(b)*r3)/pi;
13 }
14 int main(){
15     scanf("%d",&t);
16     while (t--){
17         scanf("%d%d%d",&r1,&r2,&r3);
18         if (r1>r2)swap(r1,r2);
19         if (r1>r3)swap(r1,r3);
20         if (r2>r3)swap(r2,r3);
21         double ans=0;
22         for(int i=1;i<=1000;i++)ans+=f(2*i*pi/1000.0)/1000.0;
23         printf("%.1fn",ans);
24     }
25 } 

View Code

 

原文链接: https://www.cnblogs.com/PYWBKTDA/p/13353320.html

欢迎关注

微信关注下方公众号,第一时间获取干货硬货;公众号内回复【pdf】免费获取数百本计算机经典书籍;

也有高质量的技术群,里面有嵌入式、搜广推等BAT大佬

    [nowcoder5667K]Keyboard Free

原创文章受到原创版权保护。转载请注明出处:https://www.ccppcoding.com/archives/369375

非原创文章文中已经注明原地址,如有侵权,联系删除

关注公众号【高性能架构探索】,第一时间获取最新文章

转载文章受原作者版权保护。转载请注明原作者出处!

(0)
上一篇 2023年3月2日 下午6:54
下一篇 2023年3月2日 下午6:55

相关推荐