Kite(几何+镜面对称)
C. Kite
Time Limit: 1000ms Case Time Limit: 1000ms Memory Limit: 65536KB
Input
Output
Sample Input
input | output |
---|---|
|
|
|
|
Hint
题意:求四边形,镜面对称的点;
思路:首先镜面对称,那么点的个数就是一定是偶数倍的。然后既然是镜面对称,那么他的投影点和点的镜面的距离一定是相等的;
转载请注明出处:寻找&星空の孩子
题目链接:Kite:http://www.bnuoj.com/bnuoj/problem_show.php?pid=33563
so......
- #include<cstdio>
- #include<cmath>
- #include<iostream>
- #define PI acos(-1.0)
- using namespace std;
- struct Point
- {
- double x,y;
- Point(double x=,double y=):x(x),y(y){}//构造函数,方便代码编写
- };
- typedef Point Vector;//Vector只是Point的别名
- //向量+向量=向量; 向量+点=点
- Vector operator + (Vector A,Vector B){return Vector(A.x+B.x,A.y+B.y);}
- //点-点=向量
- Vector operator - (Point A,Point B){return Vector(A.x-B.x,A.y-B.y);}
- //向量*数=向量
- Vector operator * (Vector A,double p){return Vector(A.x*p,A.y*p);}
- //向量/数=向量
- Vector operator / (Vector A,double p){return Vector(A.x/p,A.y/p);}
- //
- bool operator < (const Point& a,const Point& b){return a.x<b.x||(a.x==b.x && a.y<b.y);}
- //
- const double eps = 1e-;
- //三态函数
- int dcmp(double x){if(fabs(x)<eps)return ;else return x < ? - : ;}
- //相等
- bool operator == (const Point& a,const Point& b){return dcmp(a.x-b.x)== && dcmp(a.y-b.y)==;}
- //点积 x1*x2+y1*y2
- //向量垂直点积为0;
- //利用点积,求向量的夹角和长度;
- double Dot(Vector A,Vector B){return A.x*B.x+A.y*B.y;}
- double length(Vector A){return sqrt(Dot(A,A));}
- double Angle(Vector A,Vector B){return acos(Dot(A,B)/length(A)/length(B));}
- //叉积 x1*y2-x2*y1
- //向量共线叉积为0;
- //叉积为三角形有向面积的2倍
- //已知三点求三角形面积
- double Cross(Vector A,Vector B){return A.x*B.y-B.x*A.y;}
- double Area2(Point A,Point B,Point C){return Cross(B-A,C-A);}
- double DistanceToLine(Point P,Point A,Point B)
- {
- Vector v1=B-A, v2=P-A;
- return fabs(Cross(v1,v2))/length(v1);//如果不取绝对值,得到的是有向距离;
- }
- Point GetLineProjection(Point P,Point A,Point B)
- {
- Vector v=B-A;
- return A+v*(Dot(v,P-A)/Dot(v,v));
- }
- Point div(Point &A,Point &B)
- {
- Point E;
- E.x=(A.x+B.x)/;
- E.y=(A.y+B.y)/;
- return E;
- }
- int main()
- {
- Point A,B,C,D;
- Point AB,BC,CD,DA;
- while(scanf("%lf%lf%lf%lf%lf%lf%lf%lf",&A.x,&A.y,&B.x,&B.y,&C.x,&C.y,&D.x,&D.y)!=EOF)
- {
- AB=div(A,B);
- BC=div(B,C);
- CD=div(C,D);
- DA=div(D,A);
- // printf("%lf%lf\n%lf%lf\n%lf%lf\n%lf%lf\n",A.x,A.y,B.x,B.y,C.x,C.y,D.x,D.y);
- int cnt=;
- Point P1,P2,P3,P4;
- double x1,x2,x3,x4;
- //A--C
- P1=GetLineProjection(B,A,C);
- P2=GetLineProjection(D,A,C);
- x1=DistanceToLine(B,A,C);
- x2=DistanceToLine(D,A,C);
- if(P1==P2&&x1==x2) cnt+=;
- // if(Area2(A,B,C)==Area2(A,D,C)) cnt+=2;
- //B--D
- P1=GetLineProjection(A,B,D);
- P2=GetLineProjection(C,B,D);
- x1=DistanceToLine(A,B,D);
- x2=DistanceToLine(C,B,D);
- if(P1==P2&&x1==x2) cnt+=;
- // if(Area2(B,A,D)==Area2(B,C,D)) cnt+=2;
- //BC--DA
- P1=GetLineProjection(A,BC,DA);
- P2=GetLineProjection(D,BC,DA);
- P3=GetLineProjection(B,BC,DA);
- P4=GetLineProjection(C,BC,DA);
- x1=DistanceToLine(A,BC,DA);
- x2=DistanceToLine(D,BC,DA);
- x3=DistanceToLine(B,BC,DA);
- x4=DistanceToLine(C,BC,DA);
- if(P1==P2&&P3==P4&&x1==x2&&x3==x4) cnt+=;
- // if(Area2(D,DA,BC)+Area2(D,BC,C)==Area2(A,DA,BC)+Area2(A,BC,B)) cnt+=2;
- //AB--CD
- P1=GetLineProjection(A,AB,CD);
- P2=GetLineProjection(B,AB,CD);
- P3=GetLineProjection(C,AB,CD);
- P4=GetLineProjection(D,AB,CD);
- x1=DistanceToLine(A,AB,CD);
- x2=DistanceToLine(B,AB,CD);
- x3=DistanceToLine(C,AB,CD);
- x4=DistanceToLine(D,AB,CD);
- if(P1==P2&&P3==P4&&x1==x2&&x3==x4) cnt+=;
- // if(Area2(A,AB,CD)+Area2(A,CD,D)==Area2(B,AB,CD)+Area2(B,CD,C)) cnt+=2;
- printf("%d\n",cnt);
- }
- return ;
- }
Kite(几何+镜面对称)的更多相关文章
- C - Kite URAL - 1963 (几何+四边形判断对称轴)
题目链接:https://cn.vjudge.net/problem/URAL-1963 题目大意:给你一个四边形的n个点,让你判断对称点的个数(对称轴的个数*2). 具体思路:感谢qyn的讲解,具体 ...
- 关于Three.js基本几何形状之SphereGeometry球体学习
一.有关球体SphereGeometry构造函数参数说明 <1>.SphereGeometry(radius, widthSegments, heightSegments, phiStar ...
- 几何服务,cut功能测试
关于几何服务 几何服务用于辅助应用程序执行各种几何计算,如缓冲区.简化.面积和长度计算以及投影.在 ArcGIS Server 管理器中启动几何服务之后,您才能够在应用程序开发过程中使用该服务. 问题 ...
- 几何服务,cut功能,输入要素target(修改后)内容。
几何服务,cut功能测试,输入要素target(修改后)内容. {"displayFieldName":"","fieldAliases": ...
- 几何服务,cut功能,输入要素target(修改前)内容。
几何服务,cut功能测试,输入要素target(修改前)内容. {"geometryType":"esriGeometryPolyline","geo ...
- 如何让你的UWP应用程序无缝调用几何作图
有时候需要编辑一些几何图形,如三角形,圆锥曲线等,在UWP应用中加入这些几何作图功能是件费时间又很难做好的事.其实Windows 10 应用商店中已有一些专业的几何作图工具了,那么能借来一用吗?答案是 ...
- poj 2031Building a Space Station(几何判断+Kruskal最小生成树)
/* 最小生成树 + 几何判断 Kruskal 球心之间的距离 - 两个球的半径 < 0 则说明是覆盖的!此时的距离按照0计算 */ #include<iostream> #incl ...
- NOIP2002矩形覆盖[几何DFS]
题目描述 在平面上有 n 个点(n <= 50),每个点用一对整数坐标表示.例如:当 n=4 时,4个点的坐标分另为:p1(1,1),p2(2,2),p3(3,6),P4(0,7),见图一. 这 ...
- DOM 元素节点几何量与滚动几何量
当在 Web 浏览器中查看 HTML 文档时,DOM 节点被解析,并被渲染成盒模型(如下图),有时我们需要知道一些信息,比如盒模型的大小,盒模型在浏览器中的位置等等,本文我们就来详细了解下元素节点的几 ...
随机推荐
- windows安装mongodb及相关命令
- 安装 解压: mongodb-win32-x86_64-2008plus-ssl-3.6.4.7z 将文件夹改名为mongodb 移动文件到指定目录下,如: C:\python\soft ...
- tar打包如何不打包某一个文件夹(排除某些文件夹)
tar打包如何不打包某一个文件夹(排除某些文件夹) 问题描述: 最近想备份一下Tomcat运行的的功能文件,以防特殊情况的发生.但是在实际操作的过程中发现,可能是由于Unix/Linux版本太老的原因 ...
- Android-Java-静态成员变量&成员变量&局部变量(内存图&回收机制)
静态成员变量(回收机制) StaticDemo 和 MyDemo package android.java.oop13; class MyDemo { /** * 定义一个静态变量 */ public ...
- Buffer cache hit ratio性能计数器真的可以作为SQL Server 内存瓶颈的判断指标吗?
SQL Server中对于Buffer cache hit ratio的理解: Buffer cache hit ratio官方是这么解释的:“指示在缓冲区高速缓存中找到而不需要从磁盘中读取的页的百分 ...
- Nhibernate入门篇连接Sqlserver的增删查改
第一步:创建数据库 create table Emp( EmpId int primary key identity, EmpName ), EmpDate date ) 第二步:去官网下载:http ...
- 如何使用react-redux——傻瓜版
概述 之前看redux官方文档真是看得一脸懵逼,现在自认为会用了,于是来总结一下用法,供以后开发时参考,相信对其他人也有用. 不得不说,用了redux之后感觉挺爽的,有如下优点: 组件大多是函数组件非 ...
- 解决element-ui upload组件报错 Avoid using non-primitive value as key, use string/number value instead
到底是啥错呢,就是要求你的key必须是string或者number类型 那么解决就是找到这个报错的key(在node_modules/element-ui/lib/element-ui.common. ...
- webrtc vad小bug
当channel为5的时候offset为80,再进行下面的操作smallest_values[j + 1]将会越出数组的限界到”第97个“:应该将下图的16改为15 low_value_vector数 ...
- Taglist: Exuberant ctags (http://ctags.sf.net) not found in PATH. Plugin is not loaded
1 开发环境 Ubuntu16.04(64bit) 2 错误描述 安装好Vim的TagList插件后,打开Vim提示: 3 解决方法 根据参考资料[1]的提示,可知那是因为当前系统没有安装ctags导 ...
- google的android工具常用下载路径
android的bug工具在网上搜的时候,经常被索引到垃圾网站,今天找到了一个网站下载android工具 都是最新的,十分不错,就做个分享吧. Google 提供了 Windows.macOS 以及 ...