我是小 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)∣x∈R,y∈R,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(n−1)(n−2)61≤i<j<k≤n∑Ω(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)∣x−x0∣≤10−9 且 ∣ y − y 0 ∣ max ( ∣ y 0 ∣ , 1 ) ≤ 1 0 − 9 \frac{|y−y_0|}{ \max(|y_0|,1)} \leq 10^{−9} max(∣y0∣,1)∣y−y0∣≤10−9。
样例输入
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) 3≤n≤5×105,1≤qi≤2×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;
}