# Poj1228 Grandpa's Estate

``````#include<cstdio>
#include<cstring>
#include<cstdlib>
#include<iostream>
#include<cmath>
using namespace std;
const int maxn = 1005;
#define EPS 1e-6
#define INF 1e9
struct point {
double x,y;
point(){}
point(double _x,double _y):x(_x),y(_y){}
point operator - (const point &a) {return point(x-a.x,y-a.y);}
bool operator != (const point &a) {return x!=a.x || y!=a.y;}
bool operator == (const point &a) {return x==a.x && y==a.y;}
};
double multi(point a,point b) {return a.x*b.y - a.y*b.x;}
double dis(point a,point b) {point c=a-b;return sqrt(1.0*c.x*c.x+1.0*c.y*c.y);}
bool cmp(point a,point b) {return a.x < b.x || (a.x==b.x && a.y < b.y);}
point P[maxn],hull[maxn];
int N,cnt=0;
double s[maxn];
void quickhull(int L,int R,point a,point b) {
int x = L,i=L-1,j=R+1;
for(int k = L; k <= R; k++) if( s[k]-s[x] > EPS || ( fabs(s[x]-s[k])<EPS && cmp(P[x],P[k]))) x=k;
point y = P[x];
for(int k = L; k <= R; k++) {
s[++i] = multi(a-P[k],y-P[k]);
if( s[i] > EPS) swap(P[i],P[k]); else i--;
}
for(int k = R; k >= L; k--) {
s[--j] = multi(y-P[k],b-P[k]);
if( s[j] > EPS) swap(P[j],P[k]); else j++;
}
if( L <= i ) quickhull(L,i,a,y);
hull[++cnt] = y;
if( j <= R ) quickhull(j,R,y,b);
}
bool judge(point a,point b,point k) {
return fabs(multi(k-a,b-a)) < EPS;
}
int main() {
int T;
for(scanf("%d",&T);T;T--) {
scanf("%d",&N);
memset(s,0,sizeof s);
P[0] = point(INF,INF); int x = 0;
for(int i = 1; i <= N; i++) {
scanf("%lf%lf",&P[i].x,&P[i].y);
if( cmp(P[i],P[x]) ) x=i;
}
if(N< 5) {puts("NO"); continue;}
swap(P[1],P[x]);

cnt=0;
hull[++cnt] = P[1];
quickhull(2,N,P[1],P[1]);
hull[++cnt] = P[1];
bool fg = 1;
for(int i = 2; i <= cnt; i++) {
point a = hull[i-1];
point b = hull[i];
bool found=0;
for(int j = 1; j <= N; j++){
if(P[j] == a || P[j] == b) continue;
if(judge(a,b,P[j])) {found=1;break;}
}
if( !found ){ fg = 0; break;}
}
puts( fg ? "YES" : "NO");

}
}``````

• 本文已收录于以下专栏：

## POJ1228 Grandpa's Estate

• jerry99s
• 2018年01月25日 14:34
• 24

## poj1228 - Grandpa's Estate

• wangjian8006
• 2012年08月27日 10:18
• 2466

## Grandpa's Estate（判断是否有点在凸包边上）

• x_y_q_
• 2016年07月27日 00:27
• 566

## poj1228 Grandpa's Estate 凸包

DescriptionBeing the only living descendant of his grandfather, Kamran the Believer inherited all of...
• xtulollipop
• 2015年08月07日 20:49
• 515

## poj1228 Grandpa's Estate(凸包)

poj1228题目给你一些肯定在凸包上的点，问这些点构成的凸包是不是稳定的凸包。思路稳定凸包的话每条边上至少三个给定点。代码#include #include #include #include...
• pibaixinghei
• 2016年09月27日 14:30
• 163

## POJ 1228：Grandpa's Estate （稳定凸包）

Grandpa's Estate Time Limit: 1000MS   Memory Limit: 10000K Total Submissions: ...
• qq_28954601
• 2016年09月21日 20:48
• 305

## poj-1228 Grandpa's Estate（判断凸包是否唯一）

• acm_cxq
• 2016年05月06日 00:32
• 697

## [POJ1228]Grandpa's Estate（凸包）

• Clove_unique
• 2017年01月03日 11:39
• 179

## [POJ1228]Grandpa's Estate（计算几何-凸包）

• Blue_CuSO4
• 2018年01月18日 20:39
• 38

## Grandpa's Estate(poj1228稳定的凸包)

• leonharetd
• 2013年10月09日 20:23
• 755

举报原因： 您举报文章：Poj1228 Grandpa's Estate 色情 政治 抄袭 广告 招聘 骂人 其他 (最多只允许输入30个字)