题意
给你一个三角形的三个点
A
(
x
1
,
y
1
)
A(x_1,y_1)
A(x1,y1),
B
(
x
2
,
y
2
)
B(x_2,y_2)
B(x2,y2),
C
(
x
3
,
y
3
)
C(x_3,y_3)
C(x3,y3)
在三角形ABC上找一点
P
P
P,设
E
=
m
a
x
{
S
Δ
P
A
B
,
S
Δ
P
B
C
,
S
Δ
P
C
A
}
E=max\{ S_{\Delta PAB},S_{\Delta PBC},S_{\Delta PCA} \}
E=max{SΔPAB,SΔPBC,SΔPCA}
其中
S
Δ
X
Y
Z
S_{\Delta XYZ}
SΔXYZ表示三角形XYZ的面积
现在让你求
E
E
E的期望,最后结果乘以36输出可以证明是一个整数
思路
我们取等边三角形作为特例计算一下,设等边三角形的边长为
2
a
2a
2a
取三角形的中心为
O
O
O可以将三角形分为三部分,然后
P
P
P点的取值只会在这红黄蓝三个区域内,但是由于等边三角形是对称的,那么
P
P
P任在这三部分的某一个区域在另外两个区域都可以找到一个相同的点,所以我们只用考虑一个区域就可以了,所以我们拿蓝色区域为例,蓝色区域又可以分为两部分
这两部分的对于原来的蓝色部分也是对称的,那么只用考虑现在这个蓝色的区域就可以了
显然
S
Δ
A
P
C
S_{\Delta APC}
SΔAPC的面积是最大的我们设
P
P
P点到中线的距离为
x
x
x,
P
P
P点到
O
O
O点的垂直距离为
y
y
y
延长
P
P
P所在的直线交
A
C
AC
AC为
H
H
H,然后过
P
P
P点做
A
C
AC
AC的垂线交
A
C
AC
AC为
G
G
G
P
H
PH
PH可以用相似求得有
P
H
=
2
3
a
+
x
+
3
3
y
PH=\frac{2}{3}a+x+\frac{\sqrt{3}}{3}y
PH=32a+x+33y
P
G
=
s
i
n
(
6
0
o
)
∗
P
H
=
3
2
(
2
3
a
+
x
+
3
3
y
)
PG=sin(60^o)*PH=\frac{\sqrt{3}}{2}(\frac{2}{3}a+x+\frac{\sqrt{3}}{3}y)
PG=sin(60o)∗PH=23(32a+x+33y)
所以有
S
Δ
A
P
C
=
A
C
∗
P
G
/
2
=
3
3
a
2
+
3
2
a
x
+
1
2
a
y
S_{\Delta APC}=AC*PG/2=\frac{\sqrt{3}}{3}a^2+\frac{\sqrt{3}}{2}ax+\frac{1}{2}ay
SΔAPC=AC∗PG/2=33a2+23ax+21ay
那么因为要求期望所以我们要对面积进行积分,从图上可知,
y
y
y的区间为
0
∼
3
3
a
0\sim \frac{\sqrt{3}}{3}a
0∼33a,确定了
y
y
y的后
x
x
x的范围为
0
∼
3
y
0\sim \sqrt{3}y
0∼3y那么有积分
∫
0
3
3
a
d
y
∫
0
3
y
(
3
3
a
2
+
3
2
a
x
+
1
2
a
y
)
d
x
\int_{0}^{\frac{\sqrt{3}}{3}a}dy\int_{0}^{\sqrt{3}y}(\frac{\sqrt{3}}{3}a^2+\frac{\sqrt{3}}{2}ax+\frac{1}{2}ay) \ dx
∫033ady∫03y(33a2+23ax+21ay) dx
积分后答案为
=
11
36
a
4
=\frac{11}{36}a^4
=3611a4
由于求得是期望,根据几何概型,
P
P
P取点的数量就是我们这块积分区域的面积
3
6
a
2
\frac{\sqrt{3}}{6}a^2
63a2,二者做除法就可以得到
11
18
3
a
2
\frac{11}{18}\sqrt{3}a^2
18113a2
对于最初的等边三角来说面积
S
Δ
A
B
C
=
3
a
2
S_{\Delta ABC}=\sqrt{3}a^2
SΔABC=3a2,于是答案就是
11
18
S
Δ
A
B
C
\frac{11}{18}S_{\Delta ABC}
1811SΔABC
答案最后再乘以个36所以就是
22
S
Δ
A
B
C
22S_{\Delta ABC}
22SΔABC
虽然是等边三角形,但是可以推广到任意三角形,所以最终的答案就是22倍三角形的面积,由于都是整点,三角形的面积也会是多少多少的二分之一,答案的确是整数
#include <bits/stdc++.h>
using namespace std;
int main()
{
long long x1,x2,x3,y1,y2,y3;
while(scanf("%lld%lld%lld%lld%lld%lld",&x1,&y1,&x2,&y2,&x3,&y3)!=EOF)
{
long long sum = abs((x1*y2+y1*x3+x2*y3)-(x1*y3+y2*x3+y1*x2))*11;
printf("%lld\n",sum);
}
return 0;
}