C - Kite URAL - 1963 (几何+四边形判断对称轴)
题目链接: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 (几何+四边形判断对称轴)的更多相关文章
- URAL 1963 Kite 计算几何
Kite 题目连接: http://acm.hust.edu.cn/vjudge/contest/123332#problem/C Description Vova bought a kite con ...
- HDU 5655 四边形判断
CA Loves Stick Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 262144/262144 K (Java/Others) ...
- URAL 1963 Kite 四边形求对称轴数
题目链接: http://acm.timus.ru/problem.aspx?space=1&num=1963 题意,顺时针或逆时针给定4个坐标,问对称轴有几条,输出(对称轴数*2) 对于一条 ...
- 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 ...
- 简单几何(四边形形状) UVA 11800 Determine the Shape
题目传送门 题意:给了四个点,判断能构成什么图形,有优先规则 分析:正方形和矩形按照点积为0和长度判断,菱形和平行四边形按向量相等和长度判断,梯形按照叉积为0判平行.因为四个点是任意给出的,首先要进行 ...
- GEOS库学习之四:几何关系判断
原理上一篇已经介绍过了,这篇就直接进行程序练习 #include "geos.h" GeometryFactory factory; //创建一条环线,与线的区别就是环线是闭合的. ...
- Codeforces Round #524 (Div. 2) C. Masha and two friends 几何:判断矩形是否相交以及相交矩形坐标
题意 :给出一个初始的黑白相间的棋盘 有两个人 第一个人先用白色染一块矩形区域 第二个人再用黑色染一块矩形区域 问最后黑白格子各有多少个 思路:这题的关键在于求相交的矩形区间 给出一个矩形的左下和 ...
- [517]Kite 题解
前言 今天又是爆零的一天. 被同学坑了,还以为四边形的点是按任意序给定的,然后打了一个特别复杂的矩形判断QAQ. 题意简述 按顺序给定一个四边形,求有多少个点在这个四边形的对称轴上. 题解 分情况讨论 ...
- 原生JS获取各种高度宽度、浏览器窗口滚动条的位置、元素的几何尺寸名
1)关于 pageX, clienX,offsetX,layerX pageX:鼠标在页面上的位置,从页面左上角开始,即是以页面为参考点,不随滑动条移动而变化 clientX:鼠标在页面上可视区域的位 ...
随机推荐
- 第一节,初识OpenCV3-图像的读、写、显、格式转化等
之前一直在看深度学习,突然用到了对图像处理的东西,所以过来补充一下OpenCV基础. 就顺便从网上了买了一本OpenCV 3计算机视觉这本书,这本书比较薄,但是目前已经够我用了,在这里就记录一下我的学 ...
- springmvc启动问题
1.resource项目 freemarker.template.TemplateNotFoundException: Template not found for name "index/ ...
- 踩过的坑—iphone手机H5样式兼容总结
对一个前端开发者来说,最煎熬的莫过于"兼容"两个字了(说到这个词朋友们是不是身体一抖),哪怕对于工作多年的老油条来讲,也不是完全了解各种场景下的兼容性处理方法.在这里我就把我在工作 ...
- 安装webpack-dev-server始终不成功
先安装了webpack,后来安装webpack-dev-server会一直出现这个问题,我把webpack提示的1.0.0 , 2.0.0 ,3.0.0全都在全局装了一遍都没用,还是会出现这个问题.最 ...
- c#文件管理
Directory类-------目录管理 Directory.CreateDirectory(_Path); bool IsExit=Directory.Exists(_Path); Directo ...
- ansible小结常用模块
根据官方的分类,将模块按功能分类为:云模块.命令模块.数据库模块.文件模块.资产模块.消息模块.监控模块.网络模块.通知模块.包管理模块.源码控制模块.系统模块.单元模块.web设施模块.window ...
- 8款压箱底的Mac屏幕截图和录音录像工具软件,请你务必低调使用
以下几款是是Mac上优秀的屏幕截图.录像和录音工具,有了这些工具,在Mac上进行截屏.录制视频或者录音都会事半功倍. 1. Snagit Mac上最好用最强大的屏幕截图工具,支持各种方式的屏幕截图以及 ...
- org.apache.catalina.LifecycleException: Failed to start component [StandardEngine[Catalina].Standard
Caused by: java.lang.NoSuchMethodError: javax.servlet.ServletContext.getVirtualServerName()Ljava/lan ...
- 运维监控-基于yum的方式部署 Zabbix Agent 4.0 版本
运维监控-基于yum的方式部署 Zabbix Agent 4.0 版本 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 上一篇博客我们分享了如何基于yum的方式部署zabbix 4. ...
- Kubernetes基础概念及架构概述
Kubernetes 架构 Kubernetes是一个全新的基于容器技术的分布式架构,虽然Kubernetes只有三年,但它是谷歌十几年以来大规模应用容器技术的经验积累和升华的一个重要发展成果.确切的 ...