DTOJ#5134. 小 h 的几何

我是小 h,我是世界级几何大师。

我希望你了解一些定义。我可以证明三角形的三条高交于一点,我把这点称作垂心;我还可以证明三角形三边的中点、三条高的垂足、三角形三个顶点与垂心连线的中点、共九个点在一个圆上。我把这个圆叫九点圆,并记 △ A B C \triangle ABC ABC 的九点圆圆心为 Ω ( A , B , C ) \Omega (A, B, C) Ω(A,B,C)

现在我在单位圆(即 { ( x , y ) ∣ x ∈ R , y ∈ R , x 2 + y 2 = 1 } \{(x, y)|x \in \mathbb R, y \in \mathbb R, x^2 + y^2 = 1 \} {(x,y)xR,yR,x2+y2=1})上放置 n n n 个两两不同的点 P 1 , P 2 , ⋯   , P n P_1, P_2, \cdots , P_n P1,P2,,Pn,其中 P i ( cos ⁡ θ i , sin ⁡ θ i ) P_i ( \cos \theta_i, \sin \theta_i) Pi(cosθi,sinθi)。我还在这 n n n 个点中等概率随机三个不同点,你能求出它们九点圆圆心的期望吗?

形式化的说,你需要输出 6 n ( n − 1 ) ( n − 2 ) ∑ 1 ≤ i < j < k ≤ n Ω ( P i , P j , P k ) \frac{6}{n(n−1)(n−2)} \sum\limits_{1 \leq i < j < k \leq n } \Omega (P_i, P_j , P_k) n(n1)(n2)61i<j<knΩ(Pi,Pj,Pk)

这里我定义两个点 ( a , b ) , ( c , d ) (a, b),(c, d) (a,b),(c,d) 的和为 ( a + c , b + d ) (a + c, b + d) (a+c,b+d)

第一行一个正整数 n n n

下面 n n n 行,每行一个整数 q i , θ i = q i 1 0 9 π q_i,\theta_i = \frac{q_i}{10^9} \pi qiθi=109qiπ

仅一行两个小数 x , y x, y x,y,表示你求出的答案点坐标为 ( x , y ) (x, y) (x,y)

若我的标准答案为 ( x 0 , y 0 ) (x_0, y_0) (x0,y0),你的答案获得满分当且仅当 ∣ x − x 0 ∣ max ⁡ ( ∣ x 0 ∣ , 1 ) ≤ 1 0 − 9 \frac{|x−x_0|}{\max(|x_0|,1)} \leq 10^{−9} max(x0,1)xx0109 ∣ y − y 0 ∣ max ⁡ ( ∣ y 0 ∣ , 1 ) ≤ 1 0 − 9 \frac{|y−y_0|}{ \max(|y_0|,1)} \leq 10^{−9} max(y0,1)yy0109

样例输入
3
100000000 200000000 300000000
样例输出
1.173929381481287 0.852909620521184

对所有数据,保证 3 ≤ n ≤ 5 × 1 0 5 , 1 ≤ q i ≤ 2 × 1 0 9 , q i ≠ q j ( ∀ i ≠ j ) 3 \leq n \leq 5 \times 10^5, 1 \leq q_i \leq 2 \times 10^9, q_i \neq q_j (\forall i \neq j) 3n5×105,1qi2×109,qi=qj(i=j)

子任务编号 n ≤ n\leq n特殊性质分值
1 1 1 20 20 20 20 20 20
2 2 2 200 200 200 30 30 30
3 3 3 2 × 1 0 3 2\times10^3 2×103 20 20 20
4 4 4 5 × 1 0 5 5\times10^5 5×105 θ k = 2 k π n \theta_k=\frac{2k\pi}{n} θk=n2kπ 20 20 20
5 5 5 5 × 1 0 5 5\times10^5 5×105 10 10 10

安徽师大附中 csp2020 模拟2

真就直接百度,九点圆。。四心共线。圆心是垂心和外心的中点。
考虑垂心怎么计算。
设原点为 O O O,本题即外心。
可证 O H → = O A → + O B → + O C → \overrightarrow{OH}=\overrightarrow{OA}+\overrightarrow{OB}+\overrightarrow{OC} OH =OA +OB +OC

#include<bits/stdc++.h>
#define N 500005
using namespace std;
long double thi[N],x[N],y[N],n;
const long double d=1e9;
int main(){
//	freopen("geometry.in","r",stdin);
//	freopen("geometry.out","w",stdout);
    scanf("%Lf",&n);
	long double ansx=0,ansy=0;
	for(int i=1;i<=(int)n;++i){
	    scanf("%Lf",&thi[i]);
		y[i]=sin(M_PI*thi[i]/d),x[i]=cos(M_PI*thi[i]/d);
		ansx+=x[i]*(3.0/n);ansy+=y[i]*(3.0/n);
	}
	ansx=ansx/2.0;ansy=ansy/2.0;
	printf("%.15Lf %.15Lf\n",ansx,ansy);
	return 0;
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值