杭电 1392 Surround the Trees

2015-07-20 18:07:55 · 作者: · 浏览: 17



经典凸包问题!!!!


AC代码如下:

#include
  
   
#include
   
     #include
    
      #include
     
       #include
      
        using namespace std; struct H { double x,y; }trees[105]; bool cmp(H a,H b) { return a.x
       
        >n,n) { tt=0; for(i=0;i
        
         >trees[i].x>>trees[i].y; sort(trees,trees+n,cmp); for(i=0;i
         
          1&&xj(a[tt-1]-a[tt-2],b[tt-1]-b[tt-2],trees[i].x-a[tt-2],trees[i].y-b[tt-2])) tt--; a[tt]=trees[i].x;b[tt++]=trees[i].y; } int k=tt; for(i=n-2;i>=0;i--) { while(tt>k&&xj(a[tt-1]-a[tt-2],b[tt-1]-b[tt-2],trees[i].x-a[tt-2],trees[i].y-b[tt-2])) tt--; a[tt]=trees[i].x;b[tt++]=trees[i].y; } double sum=0; for(i=1;i