poj1113Wall 求凸包周长 Graham扫描法

2015-07-24 05:29:28 · 作者: · 浏览: 6
#include
  
   
#include
   
     #include
    
      using namespace std; typedef pair
     
       ll; ll num,dot[1010]; int i; const double pi=3.1415926535898; ll operator -(ll a,ll b) { return make_pair(a.first-b.first,a.second-b.second); } bool cmp(ll a,ll b) { return (a.first!=b.first?a.first
      
       0:d2(a,dot[0])
       
        >
num.first>>num.second; for(i=0;i >dot[i].first>>dot[i].second; } void work() { sort(dot,dot+num.first,cmp); sort(dot,dot+num.first,cmp1); ll box[1010]={dot[0],dot[1]}; int tail=1; for(i=2;i =0) box[++tail]=dot[i++]; else tail--; } double ans=d1(box[0],box[tail])+2*pi*num.second; for(i=0;i