ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

AT5618 [AGC039D] Incenters

2022-01-25 11:04:10  阅读:191  来源: 互联网

标签:cos frac times AT5618 Incenters angle pi AGC039D sin


Introduction

在这里,你可以同时学习初中数学以及必修一数学。

Solution

首先我们看到内心,他是角平分线的交点,是很不好做的,怎么办呢,三角形有 \(5\) 心,我们考虑将其他几个心与这个内心联系起来,首先外心的坐标是 \((0,0)\) 是显然的,然后重心得坐标同样显然是 \((\frac{x_a+x_b+x_c}{3},\frac{y_a+y_b+y_c}{3})\),垂心我们有一个欧拉线,他们就可以得到垂心的坐标是\((x_a+x_b+x_c,y_a+y_b+y_c)\)。还有一个旁心是没有用处的,就不管他了。

接下来就是神操作了,我们要将题目中的内心转化成为垂心。

77rdVe.png

我们假设 \(\triangle ABC\) 的内心为 \(D\),我们把三条角平分线给引出来,为什么要这么做,因为 \(\frac{\angle A+\angle B+\angle C}{2}=\frac{\pi}{2}\),然后就得到了一个新的三角形 \(\triangle EFG\) ,我们可以发现的是:

\[\because \angle GEC=\frac{1}{2}\angle B,\angle FEC=\frac{1}{2}\angle A,\angle EGB=\frac{1}{2}\angle C \]

\[\therefore \angle FEG+EGB=\frac{\angle A+\angle B +\angle C }{2}=\frac{\pi}{2} \]

\[\therefore 同理可知 \angle EFG+\angle BGF=\frac{\pi}{2} \]

\[\therefore D是\triangle EFG的垂心 \]

然后我们就把问题从求 \(\triangle ABC\) 的内心转换成了求 \(\triangle EFG\) 的垂心。

然后我们可以发现,因为题目给我们的是点的弧度,所以 \(\triangle EFG\) 每个点的坐标也是可以轻松求出的。

然后就是必修一的内容了。

因为我们现在的做法的复杂度是 \(O(n^3)\) 的,显然无法通过此题。

那么开始优化,我们假设选出的三个点的 \(T_i\) 是 \(x,y,z\) 。

我们可以知道的是现在的表达式是:

\[(\cos(\frac{(x+y)\times \pi}{L})+\cos(\frac{(y+z)\times \pi}{L})-\cos({\frac{(x+z)\times \pi}{L}}),\sin(\frac{(x+y)\times \pi}{L})+\sin(\frac{(y+z)\times \pi}{L})-\sin({\frac{(x+z)\times \pi}{L}})) \]

我们考虑和差化积。那么前面的表达式就是:

\[(-2)\times \sin(\frac{(y-z)\times \pi}{2\times L})\times\sin(\frac{(y+x+z\times 2)\times \pi}{2\times L})=(-2)\times \sin(\frac{(y-z)\times \pi}{2\times L})\times(\sin(\frac{(y+x)\times \pi}{2\times L}))\times \cos(\frac{z\times \pi}{L}+\cos(\frac{(y+x)\times \pi}{2\times L}))\times \sin(\frac{z\times \pi}{L}) \]

然后一下后缀和就好了。

后面一个式子也是同理,然后就优化到了 \(O(n^2)\)

Code

n=read();L=read();
	for (i=1;i<=n;i++)  a[i]=read();
	tot=n*(n-1)*(n-2)/6;
	for (i=n;i>=1;i--) sufs[i]=sufs[i+1]+sin(a[i]/L*PI),sufc[i]=sufc[i+1] +cos(a[i]/L*PI);
	for (A=1;A<=n-2;A++)
	    for (B=A+1;B<=n-1;B++)
	       {
	       	x=x+sin((a[A]+a[B])/L*PI)*(n-B)+2*sin((a[B]-a[A])/2/L*PI)*(cos((a[A]+a[B])/2/L*PI)*sufc[B+1]-sin((a[A]+a[B])/2/L*PI)*sufs[B+1]);
            y=y+cos((a[A]+a[B])/L*PI)*(n-B)+(-2)*sin((a[B]-a[A])/2/L*PI)*(cos((a[A]+a[B])/2/L*PI)*sufs[B+1]+sin((a[A]+a[B])/2/L*PI)*sufc[B+1]);      
		}
	x/=tot;y/=tot;
	printf("%.20lf %.20lf\n",y,x);

标签:cos,frac,times,AT5618,Incenters,angle,pi,AGC039D,sin
来源: https://www.cnblogs.com/oieralbedo/p/15842100.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有