题意:

给四个线段(两个端点的坐标)。

判断这四个线段能否构成一个矩形。(矩形的四条边都平行于X轴或Y轴)

思路:

计算几何

代码:

class Point{
public:
int x,y;
void readd(int xx,int yy){
x=xx;
y=yy;
}
}; class Segment{
public:
Point startt,endd;
int length;
int Type; //1:横 2:竖 -1:斜
void readd(int x1,int y1,int x2,int y2){
startt.readd(x1,y1);
endd.readd(x2,y2);
length=(int)sqrt((double)(x2-x1)*(x2-x1)+(double)(y2-y1)*(y2-y1));
}
int typeCheck(){
Type=-1;
if(startt.x==endd.x){
Type=2;
}
if(startt.y==endd.y){
Type=1;
}
}
};
Segment S[5]; bool samePoint(Point a,Point b){
if(a.x==b.x&&a.y==b.y){
return true;
}
return false;
} bool solve(){
if(S[1].startt.y<S[2].startt.y){
swap(S[1],S[2]);
}
if(S[1].startt.x>S[1].endd.x){
swap(S[1].startt,S[1].endd);
}
if(S[2].startt.x>S[2].endd.x){
swap(S[2].startt,S[2].endd);
} if(S[3].startt.x>S[4].startt.x){
swap(S[3],S[4]);
}
if(S[3].startt.y<S[3].endd.y){
swap(S[3].startt,S[3].endd);
}
if(S[4].startt.y<S[4].endd.y){
swap(S[4].startt,S[4].endd);
}
if(samePoint(S[1].startt,S[3].startt)&&
samePoint(S[1].endd,S[4].startt)&&
samePoint(S[3].endd,S[2].startt)&&
samePoint(S[2].endd,S[4].endd)
){
return true;
} return false;
} bool cmp1(Segment a,Segment b){
return a.Type<b.Type;
}
int main(){ rep(i,1,4){
int x1,y1,x2,y2;
cin>>x1>>y1>>x2>>y2;
S[i].readd(x1,y1,x2,y2);
S[i].typeCheck();
}
rep(i,1,4){
if(S[i].length==0 || S[i].Type==-1){
puts("NO");
return 0;
}
}
sort(S+1,S+5,cmp1);
if(!(S[1].length==S[2].length&&S[3].length==S[4].length)){
puts("NO");
return 0;
}
if(solve()){
puts("YES");
}
else{
puts("NO");
}
return 0;
}

cf14C Four Segments(计算几何)的更多相关文章

  1. HDU 6697 Closest Pair of Segments (计算几何 暴力)

    2019 杭电多校 10 1007 题目链接:HDU 6697 比赛链接:2019 Multi-University Training Contest 10 Problem Description T ...

  2. POJ 3304 Segments(计算几何)

    意甲冠军:给出的一些段的.问:能否找到一条直线,通过所有的行 思维:假设一条直线的存在,所以必须有该过两点的线,然后列举两点,然后推断是否存在与所有的行的交点可以是 代码: #include < ...

  3. poj3304 Segments【计算几何】

    C - Segments POJ - 3304 最近开始刷计算几何了 公式好多完全不会 数学不行 几何不行 记忆力不行 当机 查的题解 就当复习吧 这套专题拿来熟悉一下计算几何模板 #include ...

  4. 2018.07.04 POJ 3304 Segments(简单计算几何)

    Segments Time Limit: 1000MS Memory Limit: 65536K Description Given n segments in the two dimensional ...

  5. POJ 3304 Segments(计算几何:直线与线段相交)

    POJ 3304 Segments 大意:给你一些线段,找出一条直线可以穿过全部的线段,相交包含端点. 思路:遍历全部的端点,取两个点形成直线,推断直线是否与全部线段相交,假设存在这种直线,输出Yes ...

  6. [转] POJ计算几何

    转自:http://blog.csdn.net/tyger/article/details/4480029 计算几何题的特点与做题要领:1.大部分不会很难,少部分题目思路很巧妙2.做计算几何题目,模板 ...

  7. USACO6.5-Closed Fences:计算几何

    Closed Fences A closed fence in the plane is a set of non-crossing, connected line segments with N c ...

  8. ACM计算几何题目推荐

    //第一期 计算几何题的特点与做题要领: 1.大部分不会很难,少部分题目思路很巧妙 2.做计算几何题目,模板很重要,模板必须高度可靠. 3.要注意代码的组织,因为计算几何的题目很容易上两百行代码,里面 ...

  9. hdu 1086:You can Solve a Geometry Problem too(计算几何,判断两线段相交,水题)

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

随机推荐

  1. Java大数操作

    Java的Math包中提供了两个类用于对大数进行操作: BigInteger类,用于大整数的操作 BigDecimal类,用于大的小数操作 BigInteger类 Java中的基本类型中,表示整数的有 ...

  2. 一起学习PHP中断言函数的使用

    原来一直以为断言相关的函数是 PHPUnit 这些单元测试组件提供的,在阅读手册后才发现,这个 assert() 断言函数是 PHP 本身就自带的一个函数.也就是说,我们在代码中进行简单的测试的时候是 ...

  3. PHP7兼容mysql_connect的方法

    在php7版本的时候,mysql_connect已经不再被支持了,本文将讲述在代码层面实现php7兼容mysql系列,mysql_connect等操作. PHP7不再兼容mysql系列函数,入mysq ...

  4. 启动springboot出现错误 Caused by: java.net.BindException: Address already in use: bind

    如果运行过程中出现端口被占用 抛出了这个异常 首先可以在cmd中调出命令窗口然后 执行命令 netstat -ano  可以查看所有活动的连接  找到你被占用的端口 可以看到我被占用的端口的进程是 4 ...

  5. 经典软件测试面试题目:Android 和 ios 测试区别?这样回答:稳!

    Android 和  ios 测试区别? App 测试中 ios 和 Android 有哪些区别呢?1.Android 长按 home 键呼出应用列表和切换应用,然后右滑则终止应用:2.多分辨率测试, ...

  6. 【MySQL】MySQL进阶(外键约束、多表查询、视图、备份与恢复)

    约束 外键约束 外键约束概念 让表和表之间产生关系,从而保证数据的准确性! 建表时添加外键约束 为什么要有外键约束 -- 创建db2数据库 CREATE DATABASE db2; -- 使用db2数 ...

  7. vue 移动端项目切换页面,页面置顶

    之前项目是pc端是使用router的方式实现置顶的 //main.js router.afterEach((to, from, next) => { window.scrollTo(0, 0) ...

  8. 你了解一条sql的执行顺序吗

    sql是后端开发人员经常碰到的问题,我们经常会写这样的sql:select name,id from student where id=12 order by id desc,把这条sql放到数据库中 ...

  9. Python | JSON 数据解析(Json & JsonPath)

    一.什么是JSON? JSON(JavaScript Object Notation, JS 对象简谱) 是一种轻量级的数据交换格式.它基于 ECMAScript (欧洲计算机协会制定的js规范)的一 ...

  10. 洛谷3648 [APIO2014]序列分割(斜率优化+dp)

    首先对于这个题目. qwq 存在一个性质就是,最终的答案只跟你的分割的位置有关,而和顺序无关. 举一个小栗子 \(a\ b\ c\) 将这个东西分成两块. 如果我们先分割\(ab\)之间的话,\(an ...