AGC 039 D 题解

AGC 039 D 题解

D - Incenters (atcoder.jp)

平面几何。

首先所有点都是在圆上的。

然后任意三点的内心可以转变成角平分线和圆的交点的垂心。

然后用欧拉线定理转变成\(E(重心)\times 3\)

代码非常好写:

const double pie=3.1415926535897932384626433832795;
const int MAXN=3003;
double x=0,y=0;
int n,l;
void get(double t,int tot){
	x+=cos(pie*2*t/l)*tot;
	y+=sin(pie*2*t/l)*tot;
}
int t[MAXN];
int main(){
	scanf("%d%d",&n,&l);
	rb(i,1,n) scanf("%d",&t[i]);
	rb(i,1,n){
		rb(j,i+1,n){
			get((t[i]+t[j])/2.0,i-1+n-j);
			get((t[i]+t[j])/2.0+l/2.0,j-i-1);
		}
	}
	x/=1ll*n*(n-1)*(n-2)/6;
	y/=1ll*n*(n-1)*(n-2)/6;
	printf("%.16f %.16f\n",x,y);
	return 0;
}
posted @ 2021-05-12 23:21  WWW~~~  阅读(70)  评论(0编辑  收藏  举报