搭建一个网站要多少,wordpress插件 地图,中国制造网外贸网站,服装商城网站建设价格夫约翰想要建造一个围栏用来围住他的奶牛#xff0c;可是他资金匮乏。他建造的围栏必须包括他的奶牛喜欢吃草的所有地点。对于给出的这些地点的坐标#xff0c;计算最短的能够围住这些点的围栏的长度。 输入 输入数据的第一行包括一个整数 N。N#xff08;0 N 10,… 夫约翰想要建造一个围栏用来围住他的奶牛可是他资金匮乏。他建造的围栏必须包括他的奶牛喜欢吃草的所有地点。对于给出的这些地点的坐标计算最短的能够围住这些点的围栏的长度。 输入 输入数据的第一行包括一个整数 N。N0 N 10,000表示农夫约翰想要围住的放牧点的数目。接下来 N 行每行由两个实数组成Xi 和 Yi,对应平面上的放牧点坐标-1,000,000 Xi,Yi 1,000,000。数字用小数表示。 输出 输出必须包括一个实数表示必须的围栏的长度。答案保留两位小数。 样例输入 4 4 8 4 12 5 9.3 7 8 样例输出 12.00 不说了 凸包模板题 维护了凸包后计算相邻两个点之间的距离 #includebits/stdc.h
using namespace std;
#define eps 1e-5
inline int read(){char chgetchar();int res0;while(!isdigit(ch)) chgetchar();while(isdigit(ch)) res(res3)(res1)(ch^48),chgetchar();return res;
}
int n,m;
struct point{double x,y;point(){}point (int a,int b):x(a),y(b){};friend inline point operator -(const point a,const point b){return point(a.x-b.x,a.y-b.y);}friend inline double operator *(const point a,const point b){return (a.x*b.y-a.y*b.x);}inline double calc()const{return x*xy*y;}
}p[10005],q[10005];
inline bool comp(const point a,const point b){double det(a-p[1])*(b-p[1]);if(fabs(det)eps) return det0;return a.calc()b.calc();
}
inline double coun(point a,point b){return sqrt((a.x-b.x)*(a.x-b.x)(a.y-b.y)*(a.y-b.y));
}
inline void graham(){int date1;for(int i2;in;i){if(p[i].xp[date].x||(p[i].xp[date].xp[i].yp[date].y))datei;}if(date!1) swap(p[date],p[1]);sort(p2,p1n,comp);q[m]p[1];for(int i2;in;i){while(m3((q[m]-q[m-1])*(p[i]-q[m-1])eps))m--;q[m]p[i];}q[m1]p[1];
}
inline double cal(){double ans0;for(int i1;im;i){anscoun(q[i1],q[i]);}return ans;
}
int main(){nread();for(int i1;in;i){cinp[i].xp[i].y;}graham();double scal();printf(%.2lf\n,s);
}转载于:https://www.cnblogs.com/stargazer-cyk/p/10366469.html