USACO Training Section 5.1 Fencing the Cows 圈奶牛(凸包)

夫约翰想要建造一个围栏用来围住他的奶牛,可是他资金匮乏。他建造的围栏必须包括他的奶牛喜欢吃草的所有地点。对于给出的这些地点的坐标,计算最短的能够围住这些点的围栏的长度。
输入
输入数据的第一行包括一个整数 N。N(0 <= 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

不说了

凸包模板题

维护了凸包后计算相邻两个点之间的距离

#include<bits/stdc++.h>
using namespace std;
#define eps 1e-5
inline int read(){char ch=getchar();int res=0;while(!isdigit(ch)) ch=getchar();while(isdigit(ch)) res=(res<<3)+(res<<1)+(ch^48),ch=getchar();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*x+y*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 det>0;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 date=1;for(int i=2;i<=n;i++){if(p[i].x<p[date].x||(p[i].x==p[date].x&&p[i].y<p[date].y))date=i;}if(date!=1) swap(p[date],p[1]);sort(p+2,p+1+n,comp);q[++m]=p[1];for(int i=2;i<=n;i++){while(m>=3&&((q[m]-q[m-1])*(p[i]-q[m-1])<=eps))m--;q[++m]=p[i];}q[m+1]=p[1];
}
inline double cal(){double ans=0;for(int i=1;i<=m;i++){ans+=coun(q[i+1],q[i]);}return ans;
}
int main(){n=read();for(int i=1;i<=n;i++){cin>>p[i].x>>p[i].y;}graham();double s=cal();printf("%.2lf\n",s);
}

转载于:https://www.cnblogs.com/stargazer-cyk/p/10366469.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/451000.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Linux各发行版本简介

Linux的发行版本可以大体分为两类&#xff0c;一类是商业公司维护的发行版本&#xff0c;一类是社区组织维护的发行版本&#xff0c;前者以著名的Redhat&#xff08;RHEL&#xff09;为代表&#xff0c;后者以Debian为代表。 1、Redhat&#xff0c;应该称为Redhat系列&#xff…

个推应用统计产品(个数)Android集成实践

2019独角兽企业重金招聘Python工程师标准>>> 前段时间&#xff0c;我们公司的产品又双叒叕给我们提了新需求&#xff0c;要求我们把APP相关的数据统计分析一下&#xff0c;这些指标包括但不限于应用每日的新增、活跃、留存率等等&#xff0c;最好每天都能提供数据报…

JVM中安全点safePoint有哪些?

安全点是jvm选来进行GC的线程中断点。线程在执行到安全点后询问GC标志位&#xff0c;若标志位标识将要进行GC&#xff0c;则程序主动中断挂起线程等待GC。安全点的选定基本上是根据"是否具有让程序长时间执行的特征"为标准进行选定的。目前会产生安全点的主要有&…

深入理解 PHP7 中全新的 zval 容器和引用计数机制

深入理解 PHP7 中全新的 zval 容器和引用计数机制 最近在查阅 PHP7 垃圾回收的资料的时候&#xff0c;网上的一些代码示例在本地环境下运行时出现了不同的结果&#xff0c;使我一度非常迷惑。 仔细一想不难发现问题所在&#xff1a;这些文章大多是 PHP5.x 时代的&#xff0c;而…

分布式系统的架构思路

见&#xff1a;http://www.cnblogs.com/chulung/p/5653135.html 一、前言 在计算机领域&#xff0c;当单机性能达到瓶颈时&#xff0c;有两种方式可以解决性能问题&#xff0c;一是堆硬件&#xff0c;进一步提升配置&#xff0c;二是分布式&#xff0c;水平扩展。当然&#xff…

狂赌智能手机 中国互联网巨头深陷零利润困局

编者按&#xff1a;智能手机正在中国普及&#xff0c;互联网企业趋之若鹜。然而&#xff0c;在苹果、三星共享智能手机市场99%利润的大背景下&#xff0c;中国互联网企业要从所剩无几的利润空间里分一杯羹&#xff0c;注定备受煎熬&#xff0c;前路迷茫。 互联网巨头纷纷进入智…

占用较多堆外内存的区域

&#xff08;1&#xff09;Director Memory 主要在nio中会使用&#xff0c;在内存不足时会抛出OOM或者OOM:Direct buffer memory。 &#xff08;2&#xff09;线程堆栈 为每个线程分配的栈空间&#xff0c;用于保存局部变量&#xff0c;执行程序代码。内存不足时可能抛出StackO…

Oracle SELECT INTO 和 INSERT INTO SELECT 两种表复制语句详解

在Oracle中select into from不可以使用&#xff0c;用create table select代替该功能&#xff01;&#xff01;&#xff01;在Sql Server中可以正常使用。1.INSERT INTO SELECT语句语句形式为&#xff1a;Insert into Table2(field1,field2,...) select value1,value2,... from…

帆软地址栏传参,实例

自动查询&#xff1a; http://help.finereport.com/finereport9.0/doc-view-409.html参数的种类与区别&#xff1a; http://help.finereport.com/doc-view-156基本参数传递&#xff08;视频&#xff09;&#xff1a; http://bbs.fanruan.com/lesson-14.html超级链接-传递多个值…

RMI 说明

见&#xff1a;https://baike.baidu.com/item/RMI/1786244?fraladdin RMI远程方法调用 相关概述 RMI是Java的一组拥护开发分布式应用程序的API。RMI使用Java语言接口定义了远程对象&#xff0c;它集合了Java序列化和Java远程方法协议(Java Remote Method Protocol)。简单地说&…

李善友:为什么外企人不敢创业

摘要&#xff1a;20年前&#xff0c;人们最骄傲的是进外企&#xff0c;创业意味着找不到工作。而现在相反&#xff0c;你要说自己在外企工作&#xff0c;会被人笑话&#xff0c;令人激动的事儿是去创业。 李善友&#xff1a;中欧创业中心主任创业学兼任教授、酷6网创始人 孙陶然…

JVM对象占用内存计算

大家都知道&#xff0c;jvm中对象实例存储在堆中&#xff0c;对象的引用存储在栈中&#xff0c;而对象的元数据(类型数据)存储在方法区。在我们进行内存优化的过程中经常需要了解每个对象占用的内存大小。接下来我将介绍对象占用内存大小的计算方式。 Java的对象模型 java是面…

绘图基础语法与常用参数

1 # -*- coding: utf-8 -*-2 3 ###############################################################################4 ####################### 正文代码 #######################5 #################################################################…

MyEclipse 皮肤、主题、背景色

第一步&#xff1a;打开myeclipse--->help--->install from site--->Add将路径粘贴在这里。等待安装颜色主题。https://raw.github.com/guari/eclipse-ui-theme/master/com.github.eclipseuitheme.themes.updatesite 第二步&#xff1a;http://eclipsecolorthemes.org…

RPC 远程过程调用协议

RPC&#xff08;Remote Procedure Call Protocol&#xff09;——远程过程调用协议&#xff0c;它是一种通过网络从远程计算机程序上请求服务&#xff0c;而不需要了解底层网络技术的协议。 RPC协议假定某些传输协议的存在&#xff0c;如TCP或UDP&#xff0c;为通信程序之间携…

周鸿祎:创业前的积累很重要

摘要&#xff1a;虽然公司上市&#xff0c;也投资了很多公司&#xff0c;日前&#xff0c;在中国人民大学的演讲中&#xff0c;周鸿祎却称自己“从来不是一个成功人士&#xff0c;曾经是一个最大的失败者”。 360特供机还没露面&#xff0c;已经被周鸿祎通过微博炒得火热&#…

BZOJ 4710 [Jsoi2011]分特产 解题报告

4710 [Jsoi2011]分特产 题意 给定\(n\)个集合&#xff0c;每个集合有相同的\(a_i\)个元素&#xff0c;不同的集合的元素不同。将所有的元素分给\(m\)个不同位置&#xff0c;要求每个位置至少有一个元素&#xff0c;求分配方案数。 先考虑两个简单的问题 给定\(m\)个相同元素和\…

java接口调试思想

对于接口调试的理解&#xff1a;最近多次参与接口调试工作&#xff0c;一般情况都是获取对方接口文档&#xff0c;文档中有加密验证方式&#xff0c;根据加密验证方式开发&#xff0c;调用对应的接口。可以不可以简化这个流程那&#xff0c;至少减少一方的工作量。1、减少调用方…

SOA (面向服务的架构)

见&#xff1a;https://baike.baidu.com/item/SOA/2140650?fraladdin UDDI 解说参见&#xff1a;UDDI是什么 SOAP解说参见&#xff1a; SOAP:简单对象访问协议 面向服务的架构&#xff08;SOA&#xff09;是一个组件模型&#xff0c;它将应用程序的不同功能单元&#xff08;称…

mysql中count(*)和count(1)和count(column)区别

在日常的mysql使用中&#xff0c;我们经常会看到SELECT COUNT(*)、SELECT COUNT(1)等查询语句&#xff0c;他们到底有什么区别呢&#xff1f;今天我就来总结下。 我们先从函数的含义说起&#xff1a; count() 统计满足查询条件的结果集的总行数(包含null)&#xff0c;其中count…