UVA11437 题解
Zera / 捷攎 LilyWhite
本文距离上次更新已过去 0 天,部分内容可能已经过时,请注意甄别。

这道题的难点在于求 之间的面积关系。题目给出了 三个顶点的坐标,我们可以用海伦公式求出它的面积:

其中 为三角形三边的长,

之间的面积关系,我们可以用梅涅劳斯定理:如果一直线与 的边 或其延长线分别交于 ,则有:

图例:

图例

对题目中的 使用梅涅劳斯定理,可得 ,则

同理,

,由 可得

,即

关键的两个问题求完了,代码应该就能很轻松地写出来。只要把 的面积除以 就好了。注意输入是小数,输出不是小数。代码:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
#include <bits/stdc++.h>
using namespace std;

int main()
{
int t;
scanf("%d", &t);
for (int i = 1; i <= t; i++)
{
double xa, ya, xb, yb, xc, yc;
scanf("%lf%lf%lf%lf%lf%lf", &xa, &ya, &xb, &yb, &xc, &yc);
double x, y, z;
x = sqrt((yb - ya) * (yb - ya) + (xb - xa) * (xb - xa));
y = sqrt((yc - ya) * (yc - ya) + (xc - xa) * (xc - xa));
z = sqrt((yc - yb) * (yc - yb) + (xc - xb) * (xc - xb));
double s, p;
p = (x + y + z) / 2;
s = sqrt(p * (p - x) * (p - y) * (p - z));
printf("%.0lf\n", s / 7);
}
return 0;
}

 评论
评论插件加载失败
正在加载评论插件