题意:

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

判断这四个线段能否构成一个矩形。(矩形的四条边都平行于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;
}

最新文章

  1. oracle数据库_实例_用户_表空间之间的关系(转)
  2. stanford coursera 机器学习编程作业 exercise4--使用BP算法训练神经网络以识别阿拉伯数字(0-9)
  3. BZOJ 2301 【HAOI2011】 Problem b
  4. pycharm设置主题/默认格式/字体
  5. 正则表达式获取字符串中的img标签中的url链接
  6. Android--ViewPager的无限轮播
  7. [转] POJ字符串分类
  8. 转】Maven学习总结(七)——eclipse中使用Maven创建Web项目
  9. Drying(贪心)
  10. Java设计模式随笔
  11. Mikit前端框架,轻量级CSS&amp;JS前端框架
  12. MapReduce 入门之一步步自实现词频统计功能
  13. 解决数据库mysql插入乱码问题
  14. android的PackageManagerService详解
  15. python2,python3同时安装时,python3可以安装并升级pip库,python2报错的解决办法
  16. Java基础-原码反码补码
  17. webpack2.0学习
  18. 数据仓库基础(十一)Informatica小技巧(2)
  19. 使用Maven部署构件至私服
  20. sql server获取插入记录后的ID

热门文章

  1. 集合Collection ----Set集合
  2. Django学习day10随堂笔记
  3. obs软件mac设置
  4. Jmeter扩展组件开发(9) - 解决空指针问题
  5. Linux系类(8) - 文件搜索命令locate
  6. OC源码剖析对象的本质
  7. Jmeter集合点技术
  8. 深入浅出WPF-09.Command(命令)
  9. Bootstrap的模态框无法弹出的问题
  10. 数据结构与算法——弗洛伊德(Floyd)算法