CodeForces 135 B. Rectangle and Square(判断正方形和 矩形)
题目:http://codeforces.com/problemset/problem/135/B
题意:给8个点 判断能否用 4个点构成正方形,另外4个点构成 矩形。
输出 第一行是正方形 ,第二行是矩形。
我的思路:用了4个for循环 枚举四个点, 用向量判断,四个点构成 六条边,如果这六条边里,
有四条边 与他们垂直的边有两个,就说明是矩形,在这个基础上,有 2条边 与他们垂直的边有一个。
说明是正方形。
#include<iostream>
#include<cstdio>
#include<cstdlib>
#include<cstring>
#include<algorithm>
using namespace std; struct point
{
int x,y;
} p[10];
int check(point a,point b,point c,point d)
{
int i,j,sumt=0,sumo=0;
int px[10],py[10];//代表6条边的 向量
int y[10];
memset(y,0,sizeof(y));
px[1]=a.x-b.x;
py[1]=a.y-b.y;
px[2]=a.x-c.x;
py[2]=a.y-c.y;
px[3]=a.x-d.x;
py[3]=a.y-d.y;
px[4]=b.x-c.x;
py[4]=b.y-c.y;
px[5]=b.x-d.x;
py[5]=b.y-d.y;
px[6]=c.x-d.x;
py[6]=c.y-d.y;
for(i=1; i<=6; i++)
{
for(j=i+1; j<=6; j++)
if((px[i]*px[j]+py[i]*py[j])==0)//判断垂直
{
y[i]++;
y[j]++;
}
}
for(i=1; i<=6; i++)
{
if(y[i]==2)
sumt++;//有2条边 与其垂直的个数
if(y[i]==1)
sumo++;//有1条边 与其垂直的个数
}
if(sumt==4&&sumo==2)
return 2;// 是正方形
if(sumt==4)
return 1;//是 矩形
return 0;//都不是
}
int main()
{
int i,j,k,l,ans,f,m;
int i2,j2,k2,l2;
int b[10],y;
while(cin>>p[1].x>>p[1].y)
{
f=0;
for(i=2; i<=8; i++)
cin>>p[i].x>>p[i].y;
for(i=1; i<=5; i++)
{
for(j=i+1; j<=6; j++)
{
for(k=j+1; k<=7; k++)
{
for(l=k+1; l<=8; l++)
{
ans=check(p[i],p[j],p[k],p[l]);
if(ans==0)
continue;
if(ans==2)//当前是正方形时
{
y=1;
for(m=1; m<=8; m++)
{
if(m!=i&&m!=j&&m!=k&&m!=l)
b[y++]=m;
}
i2=b[1];
j2=b[2];
k2=b[3];
l2=b[4]; ans=check(p[i2],p[j2],p[k2],p[l2]);//看是否 剩下的点是矩形
if(ans)
{
f=1;
break;
}
}
}
if(f)
break;
}
if(f) break;
}
if(f) break;
}
if(f)
{
cout<<"YES"<<endl;
printf("%d %d %d %d\n",i,j,k,l);
printf("%d %d %d %d\n",i2,j2,k2,l2);
}
else
cout<<"NO"<<endl;
}
return 0;
}
CodeForces 135 B. Rectangle and Square(判断正方形和 矩形)的更多相关文章
- Rectangle and Square(判断正方形、矩形)
http://acm.sdut.edu.cn:8080/vjudge/contest/view.action?cid=42#problem/D 改了N多次之后终于A了,一直在改判断正方形和矩形那,判断 ...
- Codeforces Beta Round #97 (Div. 1) B. Rectangle and Square 暴力
B. Rectangle and Square 题目连接: http://codeforces.com/contest/135/problem/B Description Little Petya v ...
- 判断圆和矩形是否相交C - Rectangle and Circle
Description Given a rectangle and a circle in the coordinate system(two edges of the rectangle are p ...
- HDU 1221 Rectangle and Circle(判断圆和矩形是不是相交)
传送门: http://acm.hdu.edu.cn/showproblem.php?pid=1221 Rectangle and Circle Time Limit: 2000/1000 MS (J ...
- Codeforces Round #587 (Div. 3) C题 【判断两个矩形是否完全覆盖一个矩形问题】 {补题 [差点上分系列]}
C. White Sheet There is a white sheet of paper lying on a rectangle table. The sheet is a rectangle ...
- bzoj1661[Usaco2006 Nov]Big Square 巨大正方形*
bzoj1661[Usaco2006 Nov]Big Square 巨大正方形 题意: n*n的图中有一些J点,一些B点和一些空白点,问在空白点添加一个J点所能得到的有4个J点组成最大正方形面积.n≤ ...
- poj 1410 Intersection (判断线段与矩形相交 判线段相交)
题目链接 Intersection Time Limit: 1000MS Memory Limit: 10000K Total Submissions: 12040 Accepted: 312 ...
- python3 turtle画正方形、矩形、正方体、五角星、奥运五环
python3 环境 turtle模块 分别画出 正方形.矩形.正方体.五角星.奥运五环 #!/usr/bin/env python # -*- coding:utf-8 -*- # Author:H ...
- Intersection--poj1410(判断线段与矩形的关系)
http://poj.org/problem?id=1410 题目大意:给你一个线段和矩形的对角两点 如果相交就输出'T' 不想交就是'F' 注意: 1,给的矩形有可能不是左上 右下 所以要先判 ...
随机推荐
- php curl 伪造IP来源的代码分享
php curl 可以模仿用户登录,还可以模仿用户IP地址.伪造IP来源. 1,curl发出请求的文件fake_ip.php: <?php $ch = curl_init(); $url = & ...
- 使用WebGL实现一个Viewer来显示STL文件
关键字:WebGL,STL,ThreeJS,Chrome,Viewer,Python3.4, HTML5,Canvas. OS:Windows 10. 本文介绍如何使用ThreeJS来实现一个WebG ...
- make问题:make[1] entering directory
执行make distclean命令.
- iOS 基础 第三天(0808)
0808 分类的使用注意 分类只可以增加方法,不可以增加成员变量 分类可以访问原来类中声明的成员变量 分类可以重新实现原来类中的方法,但是会覆盖掉原来的方法,会导致原来的方法没法再使用 方法调用的优先 ...
- myEclipse中的web项目直接引入到eclipse中运行
首先打开项目属性(Properties),如果动态web项目被作为普通java项目引进去,需要首先修改为web项目,如下图: 确定后即可在eclipse中看到转换为了动态的web项目,然后继续属性(P ...
- 高动态范围光照(High Dynamic Range Imaging,简称HDRI或HDR)
1 HDR基本概念 高动态范围光照(High Dynamic Range Imaging,简称HDRI或HDR),是一种表达超过了显示器所能表现的亮度范围的图像映射技术,已成为目前游戏应用不可或缺的 ...
- phpd读取txt文件(自动解析换行)
<form id="form" method="post" action="whois.php"> <?php $newf ...
- jquery bind()方法与live()方法的区别
jquery bind() 方法和 live() 方法都可以绑定元素事件. <!DOCTYPE html> <html> <head> <meta chars ...
- 团体程序设计天梯赛-练习集L2-010. 排座位
L2-010. 排座位 时间限制 150 ms 内存限制 65536 kB 代码长度限制 8000 B 判题程序 Standard 作者 陈越 布置宴席最微妙的事情,就是给前来参宴的各位宾客安排座位. ...
- 汇编invoke和call的关系
win32汇编里面,我们既可以用invoke也可以用call调用子程序/函数,不过invoke使用简单方便,所以绝大多数情况我们都用invoke. 但是很多人只是知道使用它,对它却不是很了解.我以前对 ...