hihocoder 1040(矩形判断)
题目链接:传送门
题目大意:给你四条线段,判断能否围成一个面积大于0的矩形,能输出YES,不能输出NO
题目思路:
合法的四条线段应该满足
1.应该必须有四个不同的点
2.线段斜率分为两组,组内相同组间不同
3.若有斜率为0或斜率不存在的线段需特判,否则看斜率不同的线段乘积==-1?"YES":"NO"
#include <iostream>
#include <cstdio>
#include <cstdlib>
#include <cmath>
#include <algorithm>
#include <cstring>
#include <stack>
#include <cctype>
#include <queue>
#include <string>
#include <vector>
#include <set>
#include <map>
#include <climits>
#define lson root<<1,l,mid
#define rson root<<1|1,mid+1,r
#define fi first
#define se second
#define ping(x,y) ((x-y)*(x-y))
#define mst(x,y) memset(x,y,sizeof(x))
#define mcp(x,y) memcpy(x,y,sizeof(y))
using namespace std;
#define gamma 0.5772156649015328606065120
#define MOD 1000000007
#define inf 0x3f3f3f3f
#define N 200005
#define maxn 1050
typedef pair<int,int> PII;
typedef long long LL; int n,m;
struct Node{
int x,y;
bool operator<(const Node&a)const{
if(x==a.x)
return y<a.y;
return x<a.x;
}
}node[][];
map<PII,int>M; ///判断顶点数
double k[];///斜率 int main(){
int i,j,group,x,y,v;
while(scanf("%d",&group)!=EOF){
while(group--){
M.clear();
for(i=;i<=;++i){
scanf("%d%d",&node[i][].x,&node[i][].y);
scanf("%d%d",&node[i][].x,&node[i][].y);
sort(node[i],node[i]+);
}
int num=;
for(i=;i<=;++i)for(j=;j<=;++j){
PII p=make_pair(node[i][j].x,node[i][j].y);
if(!M[p]) ++num;
M[p]=;
}
if(num!=){printf("NO\n");continue;}///顶点数不为4,NO
for(i=;i<;++i){
if(node[i][].x==node[i][].x){ ///斜率不存在
k[i]=inf;
continue;
}
else if(node[i][].y==node[i][].y){
k[i]=;
continue;
}
else{
k[i]=(double)(node[i][].y-node[i][].y)/(double)(node[i][].x-node[i][].x);
}
}
sort(k,k+);
if(fabs(k[]-k[])<1e-&&fabs(k[]-k[])<1e-){
if(fabs(k[]-k[])<1e-)printf("NO\n");
else{
if(fabs(k[]*k[]+)<1e-)printf("YES\n");
else if(fabs(k[])<1e-&&fabs(k[]-inf)<1e-)printf("YES\n");
else printf("NO\n");
}
}
else printf("NO\n");
}
}
return ;
}
hihocoder 1040(矩形判断)的更多相关文章
- hihocoder #1040 矩形判断(计算几何问题 给8个点的坐标,能否成为一个矩形 【模板思路】)
#1040 : 矩形判断 时间限制:1000ms 单点时限:1000ms 内存限制:256MB 描述 给出平面上4条线段,判断这4条线段是否恰好围成一个面积大于0的矩形. 输入 输入第一行是一个整数T ...
- hihoCoder 1040 矩形判断(计算几何)
http://hihocoder.com/problemset/problem/1040 首先判断四条线段是否相交,给出八个点,如果有一些点重合,并且不同坐标的点只有4个的话,表示可以构成四边形. 然 ...
- HihoCoder - 1040 矩形判断
矩形判断 给出平面上4条线段,判断这4条线段是否恰好围成一个面积大于0的矩形. Input 输入第一行是一个整数T(1<=T<=100),代表测试数据的数量. 每组数据包含4行,每行包含4 ...
- hihoCoder #1040 (判断是否为矩形)
题目大意:给四条线段,问能否构成一个矩形? 题目分析:先判断能否构成四边形,然后选一条边,看另外三条边中是否为一条与他平行,两条垂直. 代码如下: # include<iostream> ...
- hihoCoder 1040 矩阵判断 最详细的解题报告
题目来源:矩阵判断 解题思路: 1.判断矩阵的4个点是否相连,一共输入8个点,只要判断是否4个点是否都经过2遍: 2.判断矩阵中任意一条边与其他边之间要么平行,要么垂直.设A(x1,y1),B(x2, ...
- [hihoCoder]矩形判断
#1040 : 矩形判断 时间限制:1000ms 单点时限:1000ms 内存限制:256MB 描述 给出平面上4条线段,判断这4条线段是否恰好围成一个面积大于0的矩形. 输入 输入第一行是一个整数T ...
- 容斥 或者 单调栈 hihocoder #1476 : 矩形计数 和 G. Snake Rana 2017 ACM Arabella Collegiate Programming Contest
先说一个简单的题目(题目大意自己看去,反正中文):hihocoder上的:http://hihocoder.com/problemset/problem/1476 然后因为这个n和m的矩阵范围是100 ...
- [bzoj2517]矩形覆盖
Description 给定一个$l\;\times\;w$的矩形,和$n$个圆,求最小的$k$使得每个圆的半径$\;\times\;k$后,能覆盖整个矩形. Input 第一行一个整数$T$,表示数 ...
- POJ 1410 Intersection (线段和矩形相交)
题目: Description You are to write a program that has to decide whether a given line segment intersect ...
随机推荐
- cascade=CascadeType.ALL的深坑
cascadetype是 级联的配置 all标示所有都级联操作 默认级联查询都是开启的 all标示 删除和update都级联操作 现在是 save的时候 他会级联保存一条数据 但是由于原有id已 ...
- POJ 3087 Shuffle'm Up(模拟退火)
Description A common pastime for poker players at a poker table is to shuffle stacks of chips. Shuff ...
- STM32的IO口灌入电流和输出驱动电流最大是多少?
最大可以输出8mA,灌入20mA,但要保证所有进入芯片VDD的电流不能超过150mA,同样所有从VSS流出的电流也不能超过150mA. 详细请看STM32的数据手册中的相关内容. 例如,STM32F1 ...
- struts2 在拦截器进行注入(依据Action是否实现自己定义接口)
比如:经常在Action中都须要获取当前登录的User,就须要获取Session.然后从Session获取当前登录的User,由于这些步骤都是反复操作,能够想办法在拦截器中进行实现.能够自己定义一个接 ...
- JDK1.9-新特性
1. Java平台级模块系统 该特性使Java9最大的一个特性,Java提供该功能的主要的动机在于,减少内存的开销,JVM启动的时候,至少会有30~60MB的内存加载,主要原因是JVM需要加载rt.j ...
- atitti.atiNav 手机导航组件的设计
atitti.atiNav 手机导航组件的设计 1.1. 三大按键导航功能,back,menu ,home1 1.2. header页头组件,为移动页面顶部的导航条设计.1 1.3. 页头主题设计1 ...
- Vivado使用技巧:封装自己设计的IP核
概述 Vivado在设计时可以感觉到一种趋势,它鼓励用IP核的方式进行设计.“IP Integrator”提供了原理图设计的方式,只需要在其中调用设计好的IP核连线.IP核一部分来自于Xilinx ...
- Java Servlet/JSP容器配置 session id
http://www.eclipse.org/jetty/documentation/current/session-management.html#setting-session-character ...
- 蓝牙(CoreBluetooth)-外部设备(服务端)
蓝牙(CoreBluetooth)-外部设备(服务端) 主要内容 1. 创建外部管理器对象 2. 设置本地外设的服务和特征 3. 添加服务和特征到到你的设置的数据库中 4. 向外公布你的的服务 5. ...
- unity shader(二)