題目大意:給你四條線段,判斷能否圍成乙個面積大於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...