欢迎访问 生活随笔!

生活随笔

当前位置: 首页 > 编程资源 > 编程问答 >内容正文

编程问答

牛客多校2 - Keyboard Free(几何)

发布时间:2024/4/11 编程问答 50 豆豆
生活随笔 收集整理的这篇文章主要介绍了 牛客多校2 - Keyboard Free(几何) 小编觉得挺不错的,现在分享给大家,帮大家做个参考.

题目链接:点击查看

题目大意:给出三个同心圆,从三个同心圆上分别选择三个顶点组成一个非退化的三角形,求三角形面积的期望

题目分析:参考博客:http://www.koule2333.top:3000/s/HJn9liYyw

借图:

如图所示,在利用向量表示出三角形的面积后,会带有两个以角度为变量的参数,且积分时带有绝对值,因为题目对精度的要求不高,所以我们可以将角度做等分,因为时间给的充足,所以我做的是 500 等分

另外向量叉积的运算公式如下:

因为只是第三维都为零,所以答案就是了

代码:
 

#include<iostream> #include<cstdio> #include<string> #include<ctime> #include<cmath> #include<cstring> #include<algorithm> #include<stack> #include<climits> #include<queue> #include<map> #include<set> #include<sstream> #include<cassert> #include<bitset> using namespace std;typedef long long LL;typedef unsigned long long ull;const int inf=0x3f3f3f3f;const int N=500;const double pi=acos(-1.0);double r[4],_cos[N+100],_sin[N+100];void init() {double delt=2*pi/N,a=0;for(int i=0;i<=N;i++){_cos[i]=cos(a);_sin[i]=sin(a);a+=delt;} }int main() { #ifndef ONLINE_JUDGE // freopen("input.txt","r",stdin); // freopen("output.txt","w",stdout); #endif // ios::sync_with_stdio(false);init();int w;cin>>w;while(w--){for(int i=1;i<=3;i++)scanf("%lf",r+i);sort(r+1,r+4);double ans=0;for(int i=0;i<N;i++)for(int j=0;j<N;j++)ans+=fabs((r[3]*_cos[j]-r[1])*(r[2]*_sin[i])-(r[2]*_cos[i]-r[1])*(r[3]*_sin[j]));printf("%.1f\n",ans/2/N/N);}return 0; }

 

总结

以上是生活随笔为你收集整理的牛客多校2 - Keyboard Free(几何)的全部内容,希望文章能够帮你解决所遇到的问题。

如果觉得生活随笔网站内容还不错,欢迎将生活随笔推荐给好友。