UVa 11437 (梅涅劳斯定理) Triangle Fun

题意:

给出三角形ABC顶点的坐标,DEF分别是三边的三等分点。求交点所形成的三角形PQR的面积。

分析:

根据梅涅劳斯定理,我们得到:

,解得

另外还有:,解得

所以AR : RP : PD = 3 : 3 : 1

同理,BE和CF也被分成这样比例的三段。

△ADC = (2/3)△ABC

△CDR = (4/7)△ADC

△CPR = (3/4)△CDR

△PQR = (1/2)△CPR

所以:△PQR = (1/7)△ABC

 1 #include <cstdio>
 2 #include <cmath>
 3 struct Point
 4 {
 5     double x, y;
 6     Point(double x=0, double y=0):x(x), y(y) {}
 7 };
 8 typedef Point Vector;
 9 Point operator - (const Point& a, const Point& b)
10 {
11     return Point(a.x-b.x, a.y-b.y);
12 }
13 double Cross(Vector a, Vector b)
14 {
15     return a.x*b.y - a.y*b.x;
16 }
17 double area(const Point& a, const Point& b, const Point& c)
18 {
19     return fabs(Cross(b-a, c-a)/2);
20 }
21
22 int main()
23 {
24     //freopen("11437in.txt", "r", stdin);
25     int T;
26     scanf("%d", &T);
27     while(T--)
28     {
29         Point a, b, c;
30         scanf("%lf%lf%lf%lf%lf%lf", &a.x, &a.y, &b.x, &b.y, &c.x, &c.y);
31         double ans = area(a, b, c) / 7;
32         printf("%d\n", (int)floor(ans+0.5000));
33     }
34     return 0;
35 }

代码君

时间: 2024-10-11 23:36:50

UVa 11437 (梅涅劳斯定理) Triangle Fun的相关文章

uvalive 4413(梅涅劳斯定理)

题意:如图所示,给出P.Q.R三点的坐标,AB.BC.AC被点F.D.E划分成m1:m2.m3:m4.m5:m6,给出m1~m6的数值,求△ABC的三个顶点A.B.C的坐标. 题解:根据梅涅劳斯定理,如果有两个三角形是这样组成的: 结论:(BD/DC)×(CE/EA)×(AF/FB)=1 证明省略,直接运用结论,在题中所给的三角形中有6组这样的三角形,分别可以推出后面两个边的比值: △CBQ 和 △CDR --> DP / CQ △BAP 和 △BFQ --> FR / BP △ACR 和 △

UVA - 11437 - Triangle Fun (计算几何~)

UVA - 11437 Triangle Fun Time Limit: 1000MS Memory Limit: Unknown 64bit IO Format: %lld & %llu Submit Status Description Problem A Triangle Fun Input: Standard Input Output: Standard Output In the picture below you can see a triangle ABC. Point D, E

Triangle Fun UVA - 11437

Triangle Fun UVA - 11437 题意:给三角形,求一些三等分点,线段交点,求面积. 简单题~ 1 #include <bits/stdc++.h> 2 using namespace std; 3 const int inf = 0x3f3f3f3f; 4 const double eps = 1e-12; 5 const double pi = acos(-1.0); 6 7 struct Point { 8 double x,y; 9 Point (double x =

UVA - 10561 Treblecross (SG定理)

Treblecross is a two player gamewhere the goal is to get three X in a row on a one-dimensional board. At the startof the game all cells in the board is empty. In each turn a player puts a X in an empty cell, and if that results in there beingthree X

UVa 11437 - Triangle Fun

了解矢量为交点的坐标. #include <iostream> #include <cstring> #include <cstdio> #include <algorithm> #include <cstdlib> #include <cmath> #define eqs 1e-8 using namespace std; double a = 2.0/3; double b = 1.0/3; int main() { //freo

UVA 11437 - Triangle Fun(计算几何)

这题只要根据题目,利用向量把点一个个求出来计算面积即可 不过据说有一种证明方法可以证明面积是1/7的原三角形 代码: #include <cstdio> #include <cstring> #include <cmath> #include <algorithm> using namespace std; int t; struct Point { double x, y; Point() {} Point(double x, double y) { th

UVA - 1434 YAPTCHA (威尔逊定理)

Description The math department has been having problems lately. Due to immense amount of unsolicited automated programs which were crawling across their pages, they decided to put Yet-Another-PublicTuring-Test-to-Tell-Computers-and-Humans-Apart on t

uva 11437

题意:给出一个三角形的三点,然后取三边的三等分点和相对的顶点连线,问围起来的三角形的面积. 题解:把CF.AD.BE三个向量先求出来,然后两两取交点,最后用叉积求面积,最后要四舍五入. #include <cstdio> #include <cstring> #include <cmath> #include <algorithm> using namespace std; const double PI = acos(-1); const double e

UVA 11401【数三角形】Triangle Counting------2015年1月24日

1.题意描述 给定边长为1,2,3,····n的n条边,现在要在里面任意选取三条边构成三角形,我们需要求一共可以构成多少个三角形? 2.题目分析 首先我们分析数据大小问题,由于数据最大可以达到10^6.所以我们如果直接枚举时间复杂度可以达到O(n^3),那么我们可以肯定的说这个时间复杂度肯定是不能承受的. 那么我们可以根据前面求整理的排列组合公式的求二项式系数的方法联想到使用递推法.这样时间复杂度可以降低到O(n).这是可以承受的.要想用递推法,我们肯定需要使用打表的方法,那么空间复杂度肯定是O