码迷,mamicode.com
首页 > 其他好文 > 详细

Grandpa's Estate POJ - 1228

时间:2017-08-17 00:39:51      阅读:145      评论:0      收藏:0      [点我收藏+]

标签:lap   判断   tor   namespace   get   tps   targe   ring   iostream   

Grandpa‘s Estate

 POJ - 1228

题意:给一些点,问能否唯一确定一个凸包。

先求凸包,当且仅当每条边都至少三个点时可唯一确定一个凸包。

技术分享
 1 #include <cstdio>
 2 #include <cstring>
 3 #include <iostream>
 4 #include <algorithm>
 5 using namespace std;
 6 const int maxn=1010;
 7 
 8 struct Node{
 9     int x,y;
10     bool operator < (const Node& a)const{
11         return x<a.x||x==a.x&&y<a.y;
12     }
13     Node operator - (Node& a){
14        return Node{x-a.x,y-a.y};
15     }
16 }p[maxn],ch[maxn];
17 
18 int cross(Node a,Node b){
19     return a.x*b.y-a.y*b.x;
20 }
21 int ConvexHull(int n){
22     if(n<6) return 0;
23     int m=0;
24     for(int i=0;i<n;i++){
25         while(m>1&&cross(ch[m-1]-ch[m-2],p[i]-ch[m-2])<=0) m--;
26         ch[m++]=p[i];
27     }
28     int k=m;
29     for(int i=n-2;i>=0;i--){
30         while(m>k&&cross(ch[m-1]-ch[m-2],p[i]-ch[m-2])<=0) m--;
31         ch[m++]=p[i];
32     }
33     m--;
34     ch[m+1]=ch[0];
35     int i,j;
36     for(i=0;i<m;i++){
37         for(j=0;j<n;j++){
38             if((ch[i].x!=p[j].x||ch[i].y!=p[j].y)&&(ch[i+1].x!=p[j].x||ch[i+1].y!=p[j].y)){
39                 if((ch[i].x-p[j].x)*(p[j].x-ch[i+1].x)>=0&&cross(ch[i]-ch[i+1],ch[i+1]-p[j])==0) break;
40             }
41         }
42         if(j==n) break;
43     }
44     return i>=m;
45 }
46 int main(){
47     int t,n;
48     scanf("%d",&t);
49     while(t--){
50         scanf("%d",&n);
51         for(int i=0;i<n;i++) scanf("%d%d",&p[i].x,&p[i].y);
52         sort(p,p+n);
53         int ans=ConvexHull(n);
54         if(ans) puts("YES");
55         else puts("NO");
56     }
57     return 0;
58 }
View Code

 

凸包一开始有个地方写错了,,判断三个点的地方也一直有问题,最后还是看的别人的~

爆炸。。。

Grandpa's Estate POJ - 1228

标签:lap   判断   tor   namespace   get   tps   targe   ring   iostream   

原文地址:http://www.cnblogs.com/yijiull/p/7376585.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!