bzoj1670【Usaco2006 Oct】Building the Moat 护城河的挖掘

1670: [Usaco2006 Oct]Building the Moat护城河的挖掘

Time Limit: 3 Sec  Memory Limit: 64 MB
Submit: 387  Solved: 288
[Submit][Status][Discuss]

Description

为了防止口渴的食蚁兽进入他的农场,Farmer John决定在他的农场周围挖一条护城河。

农场里一共同拥有N(8<=N<=5,000)股泉水,而且,护城河总是笔直地连接在河道上的相邻的两股泉水。护城河必须能保护全部的泉水,也就是说,能包围全部的泉水。泉水一定在护城河的内部,或者恰好在河道上。当然。护城河构成一个封闭的环。

挖护城河是一项昂贵的project,于是,节约的FJ希望护城河的总长度尽量小。

请你写个程序计算一下,在满足需求的条件下,护城河的总长最小是多少。 全部泉水的坐标都在范围为(1..10,000,000,1..10,000,000)的整点上,一股泉水相应着一个唯一确定的坐标。而且,随意三股泉水都不在一条直线上。

下面是一幅包括20股泉水的地图,泉水用"*"表示


图中的直线,为护城河的最优挖掘方案。即能围住全部泉水的最短路线。 路线从左上角起,经过泉水的坐标依次是:(18,0),(6,-6),(0,-5),(-3,-3),(-17,0),(-7,7),(0,4),(3,3)。绕行一周的路径总长为70.8700576850888(...)。答案仅仅须要保留两位小数,于是输出是70.87。

Input

* 第1行: 一个整数,N * 第2..N+1行: 每行包括2个用空格隔开的整数。x[i]和y[i],即第i股泉水的位 置坐标 

Output

* 第1行: 输出一个数字。表示满足条件的护城河的最短长度。保留两位小数 

Sample Input

20
2 10
3 7
22 15
12 11
20 3
28 9
1 12
9 3
14 14
25 6
8 1
25 1
28 4
24 12
4 15
13 5
26 5
21 11
24 4
1 8

Sample Output

70.87

HINT

Source

凸包 卡壳




凸包模板题




#include<iostream>
#include<cstdio>
#include<cstdlib>
#include<cstring>
#include<cmath>
#include<algorithm>
#define F(i,j,n) for(int i=j;i<=n;i++)
#define D(i,j,n) for(int i=j;i>=n;i--)
#define ll long long
#define maxn 5005
using namespace std;
int n,top;
double ans;
struct P{int x,y;}p[maxn],s[maxn];
inline int read()
{int x=0,f=1;char ch=getchar();while (ch<'0'||ch>'9'){if (ch=='-') f=-1;ch=getchar();}while (ch>='0'&&ch<='9'){x=x*10+ch-'0';ch=getchar();}return x*f;
}
inline P operator-(const P &a,const P &b)
{return (P){a.x-b.x,a.y-b.y};
}
inline ll operator*(const P &a,const P &b)
{return a.x*b.y-a.y*b.x;
}
inline ll dis(P a,P b)
{return (a.x-b.x)*(a.x-b.x)+(a.y-b.y)*(a.y-b.y);
}
inline bool operator<(const P &a,const P &b)
{ll t=(a-p[1])*(b-p[1]);if (t==0) return dis(p[1],a)<dis(p[1],b);else return t<0;
}
inline void solve()
{int t=1;F(i,2,n) if (p[i].y<p[t].y||(p[i].y==p[t].y&&p[i].x<p[t].x)) t=i;swap(p[1],p[t]);sort(p+2,p+n+1);s[++top]=p[1];s[++top]=p[2];F(i,3,n){while (top>=2&&(s[top]-s[top-1])*(p[i]-s[top-1])>=0) top--;s[++top]=p[i];}s[top+1]=p[1];F(i,1,top) ans+=sqrt(dis(s[i],s[i+1]));
}
int main()
{n=read();F(i,1,n) p[i].x=read(),p[i].y=read();solve();printf("%.2lf\n",ans);return 0;
}


转载于:https://www.cnblogs.com/yangykaifa/p/7263030.html

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

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

相关文章

Vue之组件之间的数据传递

Vue的组件作用域都是孤立的&#xff0c;不允许在子组件的模板内直接引用父组件的数据&#xff0c;必须使用特定的方法才能实现组件之间的数据传递。 下列为在vue-cli创建项目中的操作 一父组件向子组件传递数据 在Vue中&#xff0c;用props向子组件传递数据。 子组件部分&#…

偶然发现一个大佬写的 React 脚手架,叫Moderate, 用起来很方便

发现一个大佬写的 React 脚手架&#xff0c;叫Moderate, 用起来很方便 Moderate&#xff0c;意思为适中的&#xff0c;适度的&#xff0c;用这个作为代号&#xff0c;主要取决于他的本名“中用”&#xff0c;其一以贯之的想法就是中庸&#xff0c;秉承着以人为本的态度&#xf…

案例 自动办公_1300张办公系列前台参考图,请您查收!

设计情报局室内设计师的灵感聚集地关注一个有格调的空间必定有一处高颜值的前台漂亮的前台很重要...是空间给人的第一印象一个独一无二的前台设计还可以提升整个空间的气质与逼格连个漂亮的前台都没有作为颜控界扛把子的设计师们还怎么混&#xff1f;SO今天小编给大家带来一份《…

目标检测_目标检测 | Anchor free的目标检测进阶版本

今天说的是《Soft Anchor-Point Object Detection》&#xff0c;其也是最近关于anchor free的目标检测的论文&#xff0c;作者来自于CMU&#xff0c;一作同样也是FSAF(2019 CVPR)的作者。该论文的出发点还是在样本选择和FPN特征选择层面。背景Anchor free是目标检测领域的一个研…

homework1

一.什么是RUP?二.什么是XP?三.什么是敏捷过程&#xff1f; 一。什么是RUP?RUP是一种完整而且完美的软件过程 1。最佳实践 &#xff08;1&#xff09;迭代式开发 &#xff08;2&#xff09;管理需求 &#xff08;3&#xff09;使用基于构件软件的体系结构 &#xff08;4&…

五个温度带的分界线_女神建筑师在拿破仑故乡打造的海景别墅,超美!超有温度!【环球设计2225期】...

生活的温度 法国建筑师阿米莉亚塔维拉(Amelia Tavella)一直对设计充满热情&#xff0c;她出生在阿雅克肖市&#xff0c;在巴黎的建筑学院学习建筑专业&#xff0c;如今她居住普罗旺斯地区的艾克斯。她说&#xff1a;“设计让我涉足很多有趣的领域并能充分发挥我的想象力。这是一…

银行it现状调研_中央银行系统行业现状调研分析及发展趋势预测报告(2019年版)...

QYResearch预测&#xff1a;2019-2025全球与中国中央银行系统市场现状及未来发展趋势【纸版价格】&#xff1a;RMB 15000【电子版(PDF)价格】&#xff1a;RMB 15000【报告篇幅】&#xff1a;112【报告图表数】&#xff1a;158【报告出版时间】&#xff1a;2019年11月报告摘要本…

视频编解码技术小结

1、什么是H.261编码协议 答&#xff1a;H.261是最早出现的视频编码建议&#xff0c;它采用的算法结合了可减少时间冗余的帧间预测和可减少空间冗余的DCT变换的混合编码方法&#xff0c;其输出码率是p64kbit/s。p取值较小时&#xff0c;只能传清晰度不太高的图像&#…

基于BISS0001构成的热释电红外延时照明控制器电路图

BISS0001是采用CMOS数模混合结构、具有DIP-16和SOIC-16两种封装的热释电红外传感信号处理集成电路。芯片内部集成了电压比较器、状态控制器、延时电路定时器、封锁时间定时器以及参考电压源等电路&#xff0c;常用于防盗报警器、自动门等各种自动开关。利用BISS0001构成的热释电…

安卓APP破解利器之FRIDA

本文讲的是安卓APP破解利器之FRIDA&#xff0c;在我去年参加RadareCon大会的时候&#xff0c;我了解到了一个动态的二进制插桩框架——Frida。起初我觉得它似乎只有一丁点趣味&#xff0c;后来经过实践才发现它原来是如此的有趣。记得游戏里的上帝模式吗&#xff1f;这就是Frid…

如何获取option的下标和值_数智化时代下,如何获取企业增长密码?

信息化时代下&#xff0c;很多企业前前后后上线了各种信息化系统&#xff0c;ERP、OA、CRM…随着企业数字化的深入推进&#xff0c;“移动互联网、云计算、大数据、人工智能、物联网、区块链”等技术的革新&#xff0c;这些信息化系统难以满足企业对数智化转型的新需求&#xf…

基于51单片机的交通灯控制设计

课程设计任务书及成绩 课程名称 单片机课程设计 题目 交通灯控制设计 课程设计目标与任务、计划与进度安排: 实践教学要求与任务: 1、了解交通灯的基本工作原理&#xff1b; 2、用Proteus模拟实现交通灯控制&#xff1b; 3、用Keil C51编程实现上述功能&#xff1b; 4、…

福斯i6飞行模式设置_数据网络卡的时候,不妨试试“开关飞行模式”?上网速度明显变快...

相信大家都有过这种经历&#xff0c;手机数据网速很慢的时候&#xff0c;开一下飞行模式再关闭&#xff0c;上网速度会比之前快很多&#xff0c;这就有人有了疑问&#xff0c;为什么呢&#xff1f;开飞行模式再关掉飞行模式&#xff0c;其实等于是完成了一次手动的小区重选。移…

安装开源 ITIL 门户 iTOP

在 CentOS 7 上部署iTOP是一个简单的基于Web的开源IT服务管理工具。它有所有的ITIL功能&#xff0c;包括服务台、配置管理、事件管理、问题管理、变更管理和服务管理。iTOP依赖于Apache/IIS、MySQL和PHP&#xff0c;因此它可以运行在任何支持这些软件的操作系统中。因为iTOP是一…

基于FPGA 的8b10b编解码电路前端电路设计

基于FPGA 的8b10b编解码电路前端电路设计 摘 要 本设计是采用EDA技术设计的一种8B /10B 编解码电路,实现了在高速的串行数据传输中的直流平衡。该编解码电路设计大体上可以由五个模块构成&#xff0c;分别是默认编码模块、差异度计算模块、编码校正模块、并串转换模块、显示模…

day15(mysql 的多表查询,事务)

mysql之多表查询 1.合并结果集 作用:合并结果集就是把两个select语句查询的结果连接到一起&#xff01; /*创建表t1*/ CREATE TABLE t1(a INT PRIMARY KEY ,b VARCHAR(10) ) INSERT INTO t1 VALUES(1,a); INSERT INTO t1 VALUES(2,b); INSERT INTO t1 VALUES(3,c); /*创建t2*/…

vue router传参_新手使用vue-router传参时注意事项

1. 使用name和params组合传参this.$router.push({name: details, params: {id: 233}})路由配置import Vue from vueimport Router from vue-router Vue.use(Router) export default new Router({ mode: history, routes: [ { path: /details, name: details, component: resolv…

逻辑综合工具DesignCompiler使用教程

逻辑综合工具Design Compiler使用教程 图形界面design vision操作示例 逻辑综合主要是将HDL语言描述的电路转换为工艺库器件构成的网表的过程。综合工具目前比较主流的是synopsys公司Design Compiler&#xff0c;我们在设计实践过程中采用这一工具。Design compiler有两种工作…

遍历结构体_三菱ST语言编程(3)——结构体变量

上篇文章介绍了数组&#xff0c;是一组相同类型数据的列表&#xff0c;那么不同类型的数据能否组合到一起用一个标签表示呢&#xff1f;答案当然是可以的&#xff0c;而实现这个功能的就是结构体(struct)。建立结构体在三菱结构化编程的界面中左侧程序部件里可以找到结构体标签…

中的 隐藏鼠标菜单_Mac移动隐藏删除顶部菜单栏图标教程

苹果菜单栏贯穿 Mac 的屏幕顶部。左侧是苹果菜单和应用菜单&#xff0c;应用菜单一般显示你当前使用的Mac软件的所有功能菜单。右侧通常是以图标显示的状态菜单&#xff0c;帮助你快速查看Mac的状态以及快速访问某些Mac软件。移动图标位置若想要重新排列状态菜单栏的图标&#…