zoukankan      html  css  js  c++  java
  • day46-左骏驰

    T3 AT5618 [AGC039D] Incenters

    在平面中给定n个位于单位圆上的点,坐标形如((cosfrac{2pi T_i}{L},sinfrac{2pi T_i}{L})),等概率随机地选取其中不同的三个点组成三角形,求三角形的内心(即,内切圆的圆心)的横纵坐标期望。

    $3le n le 3000, n le L le 10^9, 0le T_i< L, T_ile T_{i+1} $.

    solution

    Get 一个数学知识点,方便退役之后用。。。QAQ

    但是证明在这儿

    我这儿只有结论,相信你们那么巨,推一推就出来了。

    结论

    • 一个三角形的内心是它外接圆,被三个点分成的三段圆弧的三个中点组成的三角形的垂心。
    • 外心到中心的距离是外心到垂心距离的(frac{1}{3})

    D , E , F 分别是AB , AC, BC,的中点。

    I 既是三角形ABC的内心,也是三角形DEF的垂心。

    O 是外心,G是重心,H是垂心,都是三角性ABC的。

    (OG = frac{1}{3}OH)

    然后,在本题中

    在这题中,圆心 OO 恰在原点,而平面中三点 (x_A,y_A),(x_B,y_B),(x_C,y_C)组成的三角形重心之坐标为 ((frac{x_A+x_B+x_C}{3},frac{y_A+y_B+y_C}{3}))所以对于任意 (ABC) ,三段弧中点的坐标之和,就是 ABC 内心的坐标

    然后考虑一个点被统计多少次即可。

    主要是用两个点求出它在优弧上和劣弧上的中点的坐标,在统计用了多少次即可。

    #include<iostream>
    #include<cstdio>
    #include<cstring>
    #include<cstdlib>
    #include<algorithm>
    #include<cmath>
    #define pi 3.14159265358979323846
    using namespace std;
    const int N = 3010;
    int n , L;
    int t[N];
    int main()
    {
    	scanf("%d%d" , &n , &L);
    	for(int i = 1 ; i <= n ; ++i) scanf("%d" , &t[i]);
    	double ansx = 0 , ansy = 0;
    	for(int i = 1 ; i <= n ; ++i)
    		for(int j = i + 1 ; j <= n ; ++j)
    		{
    			double tmp = pi * (t[i] + t[j]) / L;
    			ansx += cos(tmp) * (n - 2 * (j - i - 1) - 2);
    			ansy += sin(tmp) * (n - 2 * (j - i - 1) - 2);
    		}
    	ansx /= (double)n * (n - 1) * (n - 2) / 6.0;
    	ansy /= (double)n * (n - 1) * (n - 2) / 6.0;
    	printf("%.10f %.10f" , ansx , ansy);
    	return 0;
    }
    
  • 相关阅读:
    Android支付接入(四):联通VAC计费
    Android支付接入(三):电信爱游戏支付
    Android支付接入(二):移动游戏基地
    Android支付接入(一):支付宝
    一些值得练习的github项目
    html 抽奖代码
    js 获取控制台的错误信息
    面试随笔
    php Use of undefined constant的问题解决方式
    nodejs 更新最新版本
  • 原文地址:https://www.cnblogs.com/R-Q-R-Q/p/13139910.html
Copyright © 2011-2022 走看看