MYF

UVa 11437 Triangle Fun

题目链接

UVa 11437

解题方法:推公式

题目分析

题目大意

给定三角形ABC的三个顶点坐标,D、E、F分别为三个边的三等分点,求AD、BE、CF三条线相交形成的三角形面积。

解析

一开始按坐标系下推坐标做的,后来想想肯定会有比例,发现小三角形是大三角形面积的1/7,根据题意,小数部分四舍五入。详细证明过程请见作业帮

代码

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
#include <set>
#include <map>
#include <stack>
#include <cmath>
#include <queue>
#include <cstdio>
#include <string>
#include <vector>
#include <iomanip>
#include <cstring>
#include <iostream>
#include <algorithm>
#define PI acos(-1)
#define debug printf("Hi----------\n")
#define eps 1e-8
#define INF 0x3f3f3f3f
#pragma comment(linker, "/STACK:1024000000,1024000000")
typedef long long ll;
using namespace std;
#define maxn 10005
struct point{
double x,y;
}p[3];
double area(point a,point b,point c){
return (0.5)*(a.x*b.y+b.x*c.y+c.x*a.y-a.x*c.y-b.x*a.y-c.x*b.y);
}
int main(){
int t;
scanf("%d",&t);
while (t--) {
for (int i=0; i<3; i++)
scanf("%lf%lf",&p[i].x,&p[i].y);
cout<<(int)(area(p[0], p[1], p[2])/7+0.5)<<endl;
}
}