https://cn.vjudge.net/problem/UVA-12165

题目

给出D、E、F分BC,CA,AB的比$m_1:m_2$,$m_3:m_4$,$m_5:m_6$和PQR三点的坐标,求ABC三点的坐标

题解

利用梅涅劳斯定理,找出直线和三边的交点,然后每个边按顺序乘下去

可以写出三个方程

\[\frac{AR}{RP}\cdot\boxed{\frac{PQ}{QB}}\cdot\frac{BF}{FA}=1\]

\[\frac{BP}{PQ}\cdot\boxed{\frac{QR}{RC}}\cdot\frac{CD}{DB}=1\]

\[\frac{CQ}{QR}\cdot\boxed{\frac{RP}{PA}}\cdot\frac{AE}{EC}=1\]

然后得到

\[\frac{AR}{RP}\cdot\frac{PQ}{PQ+BP}=\frac{m5}{m6}=k_1\]

\[\frac{BP}{PQ}\cdot\frac{QR}{QR+RC}=\frac{m1}{m2}=k_2\]

\[\frac{CQ}{QR}\cdot\frac{RP}{RP+RA}=\frac{m3}{m4}=k_3\]

最后解

\[x_1=k_1(1+x_2)\]

\[x_2=k_2(1+x_3)\]

\[x_3=k_3(1+x_4)\]

然后点加向量就可以得出三点坐标

AC代码

#include<cstdio>
#include<cctype>
#include<cmath>
#define REP(r,x,y) for(register int r=(x); r<(y);r++)
#ifdef sahdsg
#define DBG(...) printf(__VA_ARGS__)
#else
#define DBG(...) (void)0
#endif
using namespace std; int _s; char _c;
template <class T>
inline void read(T&x) {
x=0;
do _c=getchar(); while(!isdigit(_c) && _c!='-');
_s=1;
if(_c=='-') _s=-1, _c=getchar();
while(isdigit(_c)) { x=x*10+_c-'0'; _c=getchar();} x*=_s;
}
template<class T, class...A> inline void read(T &x, A&...a){read(x); read(a...);} #define D point
#define CD const D
struct point {
double x,y;
void read() {scanf("%lf%lf",&x,&y);}
void prn() {printf("%.8lf %.8lf",x,y);}
};
D operator+(CD&l, CD&r) {return (D){l.x+r.x,l.y+r.y};}
D operator-(CD&l, CD&r) {return (D){l.x-r.x,l.y-r.y};}
D operator/(CD&l,double a) {return (D){l.x/a,l.y/a};}
D operator*(CD&l,double a) {return (D){l.x*a,l.y*a};}
D operator*(double a, CD &l) {return (D){l.x*a,l.y*a};}
double cross(CD&l, CD&r) {return l.x*r.y-l.y*r.x;}
D intersec(CD&a, D b, CD&c, D d) {
b=b-a; d=d-c; D u=a-c;
double t = cross(d, u) / cross(b,d);
return a+b*t;
}
#undef CD
#undef D
point P,Q,R,A,B,C;
#define x1 nvdsaokvl
#define x2 nvkjdavnf
#define x3 vmasdvddz
int m1,m2,m3,m4,m5,m6;
double k1,k2,k3,x1,x2,x3;
int main() {
int N; read(N);
while(0<N--) {
P.read(); Q.read(); R.read();
read(m1,m2,m3,m4,m5,m6);
k1=(double)m5/m6, k2=(double)m1/m2, k3=(double)m3/m4;
double t=1-k1*k2*k3;
x1=(k1+k1*k2*k3+k1*k2)/t;
x2=(k2+k1*k2*k3+k2*k3)/t;
x3=(k3+k1*k2*k3+k1*k3)/t;
DBG("%lf %lf %lf\n", x1,x2,x3);
A=x1*(R-P)+R;
B=x2*(P-Q)+P;
C=x3*(Q-R)+Q;
A.prn();putchar(' ');
B.prn();putchar(' ');
C.prn();putchar('\n');
}
return 0;
}

UVA 12165 Triangle Hazard的更多相关文章

  1. uva 11401 Triangle Counting

    // uva 11401 Triangle Counting // // 题目大意: // // 求n范围内,任意选三个不同的数,能组成三角形的个数 // // 解题方法: // // 我们设三角巷的 ...

  2. UVa 488 - Triangle Wave

    https://uva.onlinejudge.org/index.php?option=com_onlinejudge&Itemid=8&category=94&page=s ...

  3. UVa 11437:Triangle Fun(计算几何综合应用,求直线交点,向量运算,求三角形面积)

    Problem ATriangle Fun Input: Standard Input Output: Standard Output In the picture below you can see ...

  4. UVA 11401 - Triangle CountingTriangle Counting 数学

    You are given n rods of length 1,2, . . . , n. You have to pick any 3 of them and build a triangle. ...

  5. UVA 488 - Triangle Wave 水~

    http://uva.onlinejudge.org/index.php?option=com_onlinejudge&Itemid=8&page=show_problem&p ...

  6. UVA 11437 - Triangle Fun 向量几何

    http://uva.onlinejudge.org/index.php?option=com_onlinejudge&Itemid=8&page=show_problem&p ...

  7. 简单几何(求交点) UVA 11437 Triangle Fun

    题目传送门 题意:三角形三等分点连线组成的三角形面积 分析:入门题,先求三等分点,再求交点,最后求面积.还可以用梅涅劳斯定理来做 /********************************** ...

  8. uva 11437 - Triangle Fun

    计算几何: 直线交点: #include<cstdio> using namespace std; struct node { double x,y; node(,):x(x),y(y){ ...

  9. 【递推】【组合计数】UVA - 11401 - Triangle Counting

    http://blog.csdn.net/highacm/article/details/8629173 题目大意:计算从1,2,3,...,n中选出3个不同的整数,使得以它们为边长可以构成三角形的个 ...

随机推荐

  1. Android Studio出现Failed to open zip file问题的解决方法

    直接在网上找到gradle-3.3-all.zip下载下来,不要解压缩,放在类似下面的目录中 C:\Users\Administrator\.gradle\wrapper\dists\gradle-3 ...

  2. spring单元测试下模拟rabbitmq

    gradle添加引用 compile 'org.springframework.boot:spring-boot-starter-amqp' testCompile 'com.github.fridu ...

  3. js-02-循环语句

    循环语句分类{ for while do ( ) while } 一.for循环语句和for循环的嵌套 for循环格式eg: <script> var sim = 0; for(var i ...

  4. iOS-----------安装fir-cli错误

    1.在终端执行  gem install fir-cli 一直提示错误:    You don't have write permissions for the /Library/Ruby/Gems/ ...

  5. Zabbix自定义监控项(模板)

    虽然Zabbix提供了很多的模板(简单理解为监控项的集合),在zabbix界面点击share按钮就可以直接跳到模板大全的官方网站,但是由于模板内的监控项数量太多不好梳理且各种模板质量参差不齐,还是建议 ...

  6. java编译报错: 找不到或无法加载主类 Demo.class 的解决方法

    原因:java 命令后面的文件不能有后缀名. 解决方法:运行java时候,后面的文件去掉后缀名.

  7. 淘宝爬取图片和url

    刚开始爬取了 百度图片和搜狗图片 但是图片不是很多,随后继续爬取淘宝图片,但是淘宝反爬比较厉害 之前的方法不能用 记录可行的 淘宝爬取 利用selenium爬取 https://cloud.tence ...

  8. [译]Vulkan教程(26)描述符池和set

    [译]Vulkan教程(26)描述符池和set Descriptor pool and sets 描述符池和set Introduction 入门 The descriptor layout from ...

  9. Eureka工作原理及它和ZooKeeper的区别

    1.Eureka 简介: Eureka 是 Netflix 出品的用于实现服务注册和发现的工具. Spring Cloud 集成了 Eureka,并提供了开箱即用的支持.其中, Eureka 又可细分 ...

  10. 连接远程服务器的几种方式/Vscode + Remote

    连接远程服务器的几种方式 前言 最近在尝试做网盘,使用的技术栈大概是 .net core + MVC + Mysql + Layui,主要目的是通过这个具体的项目,熟悉熟悉 .net core 开发, ...