USACO 5.1.1 凸包参考程序
来源:互联网 发布:talkingdata数据造假 编辑:程序博客网 时间:2024/05/22 02:22
#include <iostream>#include <algorithm>#include <cstdio>#include <cmath>using namespace std;typedef struct{double x,y;}P;typedef struct{int s,t;double k,l;}E;int n,top;double sum;P p[10010];E e[20020];bool comp(const P &a,const P &b){return a.x<b.x;}double dist(int a,int b){return sqrt((p[a].x-p[b].x)*(p[a].x-p[b].x)+(p[a].y-p[b].y)*(p[a].y-p[b].y));}double slope(int a,int b){if (p[b].x-p[a].x==0) return 0;return (p[b].y-p[a].y)*1.0/(p[b].x-p[a].x);}int main(){freopen("fc.in","r",stdin);freopen("fc.out","w",stdout);int i,j;scanf("%d",&n);for (i=1;i<=n;i++)scanf("%lf%lf",&p[i].x,&p[i].y);sort (p+1,p+n+1,comp);i=1;while (i<n) {j=i+1;e[++top].s=i;e[top].t=j;e[top].l=dist(i,j);e[top].k=slope(i,j);while (top>1&&e[top-1].k>e[top].k) {top--;e[top].t=e[top+1].t;e[top].l=dist(e[top].s,e[top].t);e[top].k=slope(e[top].s,e[top].t);}i++;}while (top>0) sum+=e[top--].l;i=1;while (i<n) {j=i+1;e[++top].s=i;e[top].t=j;e[top].l=dist(i,j);e[top].k=slope(i,j);while (top>1&&e[top-1].k<e[top].k) {top--;e[top].t=e[top+1].t;e[top].l=dist(e[top].s,e[top].t);e[top].k=slope(e[top].s,e[top].t);}i++;}while (top>0) sum+=e[top--].l;printf("%.2f\n",sum);return 0;}
0 0
- USACO 5.1.1 凸包参考程序
- USACO 5.1.1 凸包参考程序
- USACO 5.1.1凸包
- USACO 5.1.1 凸包模板(水平序)
- USACO FC,二维凸包
- USACO5.1凸包参考代码
- USACO Section 5.1 Fencing the Cows - 凸包模板题~~
- usaco 5.1 Fencing the Cows(凸包模板题)
- 雨刷程序参考代码1
- USACO JAN14 奶牛冰壶运动 凸包+判定
- 凸包[C程序]
- USACO第一单元全部参考代码
- USACO 5.1
- 多点触摸参考程序
- VC:剪切板参考程序
- VC:油槽参考程序
- awk单行程序参考
- 通用充电器参考程序
- jQuery.parseJSON() 函数详解
- hadoop core-site.xml(hadoop.tmp.dir)
- swift 单例模式正确写法
- cocos2d-x 3.3 CC_CALLBACK_0 std::bind与std::function
- URL编码(encodeURIComponent和decodeURIComponent)
- USACO 5.1.1 凸包参考程序
- PHP图片压缩的方法
- AutoLayout框架Masonry使用心得
- {Unity} 停止播放PlayClipAtPoint播放产生的OneShotAudio音效的方法
- iOS -- childViewController 的问题
- hdu2544——最短路(最短路径模板)
- POJ3461 字符串双HASH
- Android ListView setOnItemClickListener点击无效原因分析
- 【深入实践ucos-ii】第一个示例程序代码