Problem A

Time Limit : 3000/1000ms (Java/Other)   Memory Limit : 65535/32768K (Java/Other)
Total Submission(s) : 745   Accepted Submission(s) : 89

Font: Times New Roman | Verdana | Georgia

Font Size: ← →

Problem Description

给定两个三角形,判断两个三角形是否相似。
注意6个点的坐标严格两两不重合,并且肯定能组成三角形。
请注意,由于测试数据有多组,主函数可采用如下格式。
#include<stdio.h>
……
int main()
{
while(scanf() != EOF)
{
……
}
return 0;
}

Input

多组测试数据输入(200组左右)。
输入 6个点的坐标x1,y1,x2,y2,x3,y3,x4,y4,x5,y5,x6,y6,前三个点表示第一个三角形的坐标,后三个点表示第二个三角形的坐标。
(1<=xi<=100,1<=yi<=100,xi,yi为int型)

Output

如果两个三角形相似输出Yes,否则输出No

Sample Input

0 1
1 1
1 0
4 3
3 3
3 4

Sample Output

Yes

Author

moonlike
 
我们把它们六条边算出来,然后排序,最小/另一个最小=比值=三角形周长/另外一个三角形周长(精度我是取1e-6)
#include<stdio.h>
//#include<bits/stdc++.h>
#include<string.h>
#include<iostream>
#include<math.h>
#include<sstream>
#include<set>
#include<queue>
#include<map>
#include<vector>
#include<algorithm>
#include<limits.h>
#define inf 0x3fffffff
#define INF 0x3f3f3f3f
#define lson l,m,rt<<1
#define rson m+1,r,rt<<1|1
#define LL long long
#define ULL unsigned long long
using namespace std;
double x1,y1,x2,y2,x3,y3;
double x4,y4,x5,y5,x6,y6;
double dis(double x_1,double y_1,double x_2,double y_2)
{
return sqrt((x_1-x_2)*(x_1-x_2)+(y_1-y_2)*(y_1-y_2));
}
int main()
{
double d[3];
double e[3];
double r1,r2;
while(cin>>x1>>y1>>x2>>y2>>x3>>y3>>x4>>y4>>x5>>y5>>x6>>y6)
{
d[0]=dis(x1,y1,x2,y2);
d[1]=dis(x1,y1,x3,y3);
d[2]=dis(x2,y2,x3,y3);
e[0]=dis(x4,y4,x5,y5);
e[1]=dis(x4,y4,x6,y6);
e[2]=dis(x5,y5,x6,y6);
sort(d,d+3);
sort(e,e+3);
// cout<<d[0]<<endl;
// cout<<e[0]<<endl;
// printf("%f\n",d[0]/e[0]);
r1=(double)d[0]/e[0]*1.0;
r2=(double)(d[0]+d[1]+d[2])/(e[0]+e[1]+e[2])*1.0;
if(abs(r1-r2)<=1e-6)
{
puts("Yes");
}
else
{
puts("No");
}
}
return 0;
}

  

最新文章

  1. Linux vi/vim(转载)
  2. 在 Visual Studio 2013 中创建 ASP.NET Web 项目(1):概述 - 创建 Web 应用程序项目
  3. Akka.NET
  4. http_load的安装及使用方法
  5. susy 学习之进阶
  6. Embedding Documents in Word 2007 by Using the Open XML SDK 2.0 for Microsoft Office
  7. java 如何得到ISO 8601 时间格式
  8. MVC的TryUpdateModel
  9. Python编程快速上手——让繁琐工作自动化学习笔记
  10. 如何开发webpack loader
  11. linux禁用锁定和解除解锁用户账号的方法
  12. Notepad++使用教程
  13. N!中末尾有多少个0
  14. less编译工具——koala使用介绍
  15. Swift 4迁移总结:喜忧参半,新的起点
  16. 关于AndroidStudio混淆配置,简单的整理(转)
  17. Kubernetes查看日志命令
  18. 关于 C++ 默认构造函数 的几个误区 转载
  19. Android studio的gradle
  20. 20155302 Exp2 后门原理与实践

热门文章

  1. java判断姓是否合格 百家姓
  2. hibernate学习笔记(1)基础配置与jar包
  3. LINUX 使用DBCA创建ORACLE数据库
  4. Android中的文件读写总结
  5. 数组中的最大值以及最小值的位置变换的问题(C++)
  6. 关于Java继承体系中this的表示关系
  7. ubuntu16配置Mask-RCNN
  8. 算法Sedgewick第四版-第1章基础-1.4 Analysis of Algorithms-003定理
  9. Conda / Miniconda——软件包管理系统使用
  10. 1027C Minimum Value Rectangle