hihocoder 1040(矩形判斷)

2022-02-28 23:46:06 字數 1507 閱讀 6359

題目大意:給你四條線段,判斷能否圍成乙個面積大於0的矩形,能輸出yes,不能輸出no

題目思路:

合法的四條線段應該滿足

1.應該必須有四個不同的點 

2.線段斜率分為兩組,組內相同組間不同 

3.若有斜率為0或斜率不存在的線段需特判,否則看斜率不同的線段乘積==-1?"yes":"no"

#include #include 

#include

#include

#include

#include

#include

#include

#include

#include

#include

#include

#include

#include

#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 1050typedef pair

pii;

typedef

long

long

ll;int

n,m;

struct

node

}node[

4][2

];map

int>m; ///

判斷頂點數

double k[5];///

斜率int

main()

int num=0

;

for(i=0;i<=3;++i)for(j=0;j<=1;++j)

if(num!=4)///

頂點數不為4,no

for(i=0;i<4;++i)

else

if(node[i][0].y==node[i][1

].y)

else

}sort(k,k+4

);

if(fabs(k[0]-k[1])<1e-5&&fabs(k[2]-k[3])<1e-5

) }

else printf("

no\n");}}

return0;

}

hihoCoder 1040 矩形判斷

描述 給出平面上4條線段,判斷這4條線段是否恰好圍成乙個面積大於0的矩形。輸入 輸入第一行是乙個整數t 1 t 100 代表測試資料的數量。每組資料報含4行,每行包含4個整數x1,y1,x2,y2 0 x1,y1,x2,y2 100000 其中 x1,y1 x2,y2 代表一條線段的兩個端點。輸出 ...

hihoCoder1040 矩形判斷

大體思路是可以出來的,就是先判斷能否組成四邊形,然後再判斷能否組成矩形。四邊形這部分比較難搞,但是我們有st l 啊,直接自定義乙個小於號,然後把所有的點扔進se t 最後看下si ze是不是等於 4 就好了。好,我們已經知道了這是乙個四邊形,再怎麼判斷它是否是矩形?思來想去啊,似乎計算幾何中沒有簡...

hihoCoder1040 矩形判斷

時間限制 1000ms 單點時限 1000ms 記憶體限制 256mb 描述給出平面上4條線段,判斷這4條線段是否恰好圍成乙個面積大於0的矩形。輸入輸入第一行是乙個整數t 1 t 100 代表測試資料的數量。每組資料報含4行,每行包含4個整數x1,y1,x2,y2 0 x1,y1,x2,y2 100...