题目链接:https://cn.vjudge.net/problem/URAL-1963

题目大意:给你一个四边形的n个点,让你判断对称点的个数(对称轴的个数*2)。

具体思路:感谢qyn的讲解,具体的判断过程如下,首先判断两条对角线是不合法的。对于当前的对角线,(x2,y2)与(x4,y4)形成的对角线,我们只需要判断第一个点与第四个点形成的距离和第三个点和第四个点形成的距离是不是相同的,以及第二个点与第一个点形成的距离和第三个点和第二个点形成的距离是不是相等就能判断出来了。第二条对角线的判断方法类似。

然后再开始判断每条边的中点是不是合法的,这里的判断方法是,先判断是不是矩形,如果是矩形的话,直接就是有4个点是符合的。然后再开始讨论梯形的情况,只判断腰是不是相等的就可以判断出是不是有两个点是不是合法的(注意有两个梯形)。然后需要排除一种可能性,就是平行四边形,平行四边的两个梯形的判断方法都能符合,所以当时平行四边形的时候对原来的答案减去4就可以了。

AC代码:

 #include<iostream>
#include<stack>
#include<cmath>
#include<map>
#include<algorithm>
#include<vector>
#include<stdio.h>
#include<queue>
#include<string>
#include<cstring>
using namespace std;
const int maxn = ;
# define inf 0x3f3f3f3f
bool judge(int x1,int y1,int x2,int y2){
if(x1*x2+y1*y2==)return true;
return false;
}
int dis(int x1,int y1,int x2,int y2){
return (x1-x2)*(x1-x2)+(y1-y2)*(y1-y2);
}
int main(){
int x1,y1,x2,y2;
int x3,y3,x4,y4;
scanf("%d %d",&x1,&y1);
scanf("%d %d",&x2,&y2);
scanf("%d %d",&x3,&y3);
scanf("%d %d",&x4,&y4);
int ans=;
if(judge(x3-x1,y3-y1,x4-x2,y4-y2)){
if(dis(x4,y4,x1,y1)==dis(x4,y4,x3,y3)&&dis(x2,y2,x1,y1)==dis(x2,y2,x3,y3))ans+=;
if(dis(x3,y3,x4,y4)==dis(x3,y3,x2,y2)&&dis(x1,y1,x2,y2)==dis(x1,y1,x4,y4))ans+=;
}
int tot=;
if(judge(x3-x4,y3-y4,x1-x4,y1-y4))tot++;
if(judge(x4-x1,y4-y1,x2-x1,y2-y1))tot++;
if(judge(x1-x2,y1-y2,x3-x2,y3-y2))tot++;
if(judge(x4-x3,y4-y3,x2-x3,y2-y3))tot++;
if(tot>=){
ans+=;
}
int k=;
if(dis(x4,y4,x1,y1)==dis(x3,y3,x2,y2)){
ans+=;
k++;
}
if(dis(x3,y3,x4,y4)==dis(x2,y2,x1,y1)){
ans+=;
k++;
}
if(k==)ans-=;
printf("%d\n",ans);
return ;
}

C - Kite URAL - 1963 (几何+四边形判断对称轴)的更多相关文章

  1. URAL 1963 Kite 计算几何

    Kite 题目连接: http://acm.hust.edu.cn/vjudge/contest/123332#problem/C Description Vova bought a kite con ...

  2. HDU 5655 四边形判断

    CA Loves Stick Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 262144/262144 K (Java/Others) ...

  3. URAL 1963 Kite 四边形求对称轴数

    题目链接: http://acm.timus.ru/problem.aspx?space=1&num=1963 题意,顺时针或逆时针给定4个坐标,问对称轴有几条,输出(对称轴数*2) 对于一条 ...

  4. You can Solve a Geometry Problem too (hdu1086)几何,判断两线段相交

    You can Solve a Geometry Problem too Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/3276 ...

  5. 简单几何(四边形形状) UVA 11800 Determine the Shape

    题目传送门 题意:给了四个点,判断能构成什么图形,有优先规则 分析:正方形和矩形按照点积为0和长度判断,菱形和平行四边形按向量相等和长度判断,梯形按照叉积为0判平行.因为四个点是任意给出的,首先要进行 ...

  6. GEOS库学习之四:几何关系判断

    原理上一篇已经介绍过了,这篇就直接进行程序练习 #include "geos.h" GeometryFactory factory; //创建一条环线,与线的区别就是环线是闭合的. ...

  7. Codeforces Round #524 (Div. 2) C. Masha and two friends 几何:判断矩形是否相交以及相交矩形坐标

    题意 :给出一个初始的黑白相间的棋盘  有两个人  第一个人先用白色染一块矩形区域 第二个人再用黑色染一块矩形区域 问最后黑白格子各有多少个 思路:这题的关键在于求相交的矩形区间 给出一个矩形的左下和 ...

  8. [517]Kite 题解

    前言 今天又是爆零的一天. 被同学坑了,还以为四边形的点是按任意序给定的,然后打了一个特别复杂的矩形判断QAQ. 题意简述 按顺序给定一个四边形,求有多少个点在这个四边形的对称轴上. 题解 分情况讨论 ...

  9. 原生JS获取各种高度宽度、浏览器窗口滚动条的位置、元素的几何尺寸名

    1)关于 pageX, clienX,offsetX,layerX pageX:鼠标在页面上的位置,从页面左上角开始,即是以页面为参考点,不随滑动条移动而变化 clientX:鼠标在页面上可视区域的位 ...

随机推荐

  1. 关于继承的基本知识,方法重写,final和abstract的使用, 动态绑定和静态绑定的知识

    一.继承: 涉及关键字: extends(继承) super final abstract 特点: 1.类与类之间可以用 XX是XX来描述 , 那么他们之间就存在继承关系.  2.Java中不支持多继 ...

  2. hdu 4352 "XHXJ's LIS"(数位DP+状压DP+LIS)

    传送门 参考博文: [1]:http://www.voidcn.com/article/p-ehojgauy-ot.html 题解: 将数字num字符串化: 求[L,R]区间最长上升子序列长度为 K ...

  3. grub.conf解析

    一.grub简介系统启动引导管理器,是在计算机启动后运行的第一个程序,他是用来负责加载.传输控制到操作系统的内核,一旦把内核挂载,系统引导管理器的任务就算完成退出,系统引导的其它部份,比如系统的初始化 ...

  4. linux driver ------ platform模型,驱动开发分析

    一.platform总线.设备与驱动 在Linux 2.6 的设备驱动模型中,关心总线.设备和驱动3个实体,总线将设备和驱动绑定.在系统每注册一个设备的时候,会寻找与之匹配的驱动:相反的,在系统每注册 ...

  5. libmysqlclient.so.18: cannot open shared object file

    libmysqlclient.so.18: cannot open shared object file 解决libmysqlclient.so.18: cannot open shared obje ...

  6. hadoop 伪分布式搭建

    下载hadoop1.0.4版本,和jdk1.6版本或更高版本:1. 安装JDK,安装目录大家可以自定义,下面是我的安装目录: /usr/jdk1.6.0_22 配置环境变量: [root@hadoop ...

  7. JVM 启动参数及原理 转

    Java虚拟机(JVM)是Java应用的运行环境,从一般意义上来讲,JVM是通过规范来定义的一个虚拟的计算机,被设计用来解释执行从Java源码编译而来的字节码.更通俗地说,JVM是指对这个规范的具体实 ...

  8. 面向对象【day07】:面向对象使用场景(十)

    本节内容 1.概述 2.知识回顾 3.使用场景 一.概述 之前我们学了面向对象知识,那我们在什么时候用呢?不可能什么时候都需要用面向对象吧,除非你是纯的面向对象语言,好的,我们下面就来谈谈 二.知识回 ...

  9. java io系列13之 BufferedOutputStream(缓冲输出流)的认知、源码和示例

    本章内容包括3个部分:BufferedOutputStream介绍,BufferedOutputStream源码,以及BufferedOutputStream使用示例. 转载请注明出处:http:// ...

  10. Dom4j完整教程

    转自:https://blog.csdn.net/chenweitang123/article/details/6255108 目录 1.DOM4J简介 2.XML文档操作1 2.1.读取XML文档: ...