题目链接: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. python之三元表达式、列表推导、生成器表达式、递归、匿名函数、内置函数

    目录 一 三元表达式 二 列表推到 三 生成器表达式 四 递归 五 匿名函数 六 内置函数 一.三元表达式 def max(x,y): return x if x>y else y print( ...

  2. Arduino、bootloader、BadUSB、及其相关硬件知识入门学习

    内容中包含 base64string 图片造成字符过多,拒绝显示

  3. maven构建myeclipse 工程

    前提:安装maven完成后 mvn -version查看版本 一,新建WEB 工程  mvn archetype:generate -DgroupId={project-packaging} -Dar ...

  4. Hadoop记录-Hadoop集群重要监控指标

    通用监控指标 对于每个RPC服务应该监控 RpcProcessingTimeAvgTime(PRC处理的平均时间) 通常hdfs在异常任务突发大量访问时,这个参数会突然变得很大,导致其他用户访问hdf ...

  5. 【leetcode70】【动态规划】 爬楼梯

    (1 pass 一维动态规划) 爬楼梯(easy) 假设你正在爬楼梯.需要 n 阶你才能到达楼顶. 每次你可以爬 1 或 2 个台阶.你有多少种不同的方法可以爬到楼顶呢? 注意:给定 n 是一个正整数 ...

  6. PHP7 学习笔记(十六)Yaconf 一个高性能的配置管理扩展

    鸟哥博客原文:Yaconf – 一个高性能的配置管理扩展 什么是yaconf ? 它使用单独的一个配置目录(在yaconf.directory指定), 不和代码在一起.它在PHP启动的时候, 处理所有 ...

  7. JVM垃圾回收机制与内存回收

    暂时转于:https://blog.csdn.net/qq_27035123/article/details/72857739 垃圾回收机制 GC是垃圾回收机制,java中将内存管理交给垃圾回收机制, ...

  8. tomcat源码研究之源码导入eclipse

    版本:8.5.x官网:https://tomcat.apache.org/svn.html1. 下载源码,git镜像:https://github.com/apache/tomcat85 .2. 导入 ...

  9. 一.ArrayList原理及实现学习总结

    一.ArrayList介绍 ArrayList是一种线性数据结构,它的底层是用数组实现的,相当于动态数组.与Java中的数组相比,它的容量能动态增长.类似于C语言中的动态申请内存,动态增长内存. 当创 ...

  10. 华为平板安装APK,提示“该安装包未包含任何证书”

    有的平板上会有错误现象 打包时签名勾选v1即可.