[ACM] CSU 1548 Design road (三分)

2024-01-28 12:58
文章标签 design acm 三分 road csu 1548

本文主要是介绍[ACM] CSU 1548 Design road (三分),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

http://acm.csu.edu.cn/OnlineJudge/problem.php?id=1548

第一次接触三分,题意和代码参考的网上的。

题意:修路:从(0,0)~(x,y)n个数表示有第二行开始有n行表示有n条河,tx是河的起始位置,ty是河的宽度,有水的地方要修桥,而xy表示修路的端点,C1表示修路每米的花费,C2表示修桥每米的花费,问你最后花费的最少金额!

思路:先把有河的地方都和到一起,然后它的宽度就知道了,那么就把高度三分,找花费最小的点

这里三分求的是最小值。

三分法介绍

     在区间内用两个mid将区间分成三份,这样的查找算法称为三分查找,也就是三分法,三分法常用于求解单峰函数的最值。 

      还有一种理解,即在二分查找的基础上,在左区间或者右区间上再进行一次二分。

三分与二分的区别

     二分法适用于单调函数,而单峰函数用二分明显不太好了,对于有些单峰函数,可以求导后转化为单调函数,从而使用二分,然而很多情况求导是很麻烦的,这时就需要用到三分了。

const int inf=0x3f3f3f3f;
int n;
double x,y,c1,c2,sum,ans;
const double eps=1e-8;double dis(double x1,double y1,double x2,double y2)
{return hypot(x1-x2,y1-y2);
}void fen3(double l,double r)//求最小值
{double mid1=l+(r-l)/3;double mid2=l+(r-l)*2/3;double s1=dis(0,0,sum,mid1)*c2+dis(sum,mid1,x,y)*c1;double s2=dis(0,0,sum,mid2)*c2+dis(sum,mid2,x,y)*c1;if(fabs(s1-s2)<eps){ans=s2;return;}if(s1>s2)fen3(mid1,r);elsefen3(l,mid2);
}
int main()
{while(scanf("%d%lf%lf%lf%lf",&n,&x,&y,&c1,&c2)!=EOF){sum=0;for(int i=1;i<=n;i++){double tx,ty;scanf("%lf%lf",&tx,&ty);sum+=ty;}fen3(0,y);printf("%.2f\n",ans);}return 0;
}


 

 

这篇关于[ACM] CSU 1548 Design road (三分)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/653697

相关文章

【会议征稿,ACM出版】2024年图像处理、智能控制与计算机工程国际学术会议(IPICE 2024,8月9-11)

2024年图像处理、智能控制与计算机工程国际学术会议(IPICE 2024)将于2024年8月9-11日在中国福州举行。本届会议由阳光学院、福建省空间信息感知与智能处理重点实验室、空间数据挖掘与应用福建省高校工程研究中心联合主办。 会议主要围绕图像处理、智能控制与计算机工程等研究领域展开,旨在为从事计算机等相关研究的专家学者提供一个交流科研成果和前沿技术的平台,了解学术发展趋势,拓宽研究思路

道路 Road(百练,POJ)

题目链接: 1724 -- ROADS (poj.org) 题目描述: 思路: 这题目乍一看,是一个含有2个标尺的单源最短路问题,挺难处理的。 既然没法直接用最短路处理,那我们就“记录信息”,将花费的时间也记录进dp数组,然后跑“状态最短路”。 用f[i][j] 表示到达点i 且 总花费时间为j的最短距离,然后跑堆优化的dijkstra算法就好。由于不含有负边权,因此可以搞一个vis数

杭电ACM hdu 2110 Crisis of HDU 解题报告(母函数)

Problem Description 话说上回讲到HDU大战东洋小苟,结果自然是中方大胜,这一战也使得海东集团在全球同行业中的地位更加巩固。随着集团的发展,很多创业时期的元老逐步功成身退,先是8600移民海外,然后是linle夫妇退隐山林,逐渐的,最初众多的元老只剩下XHD夫妇和Wiskey三人了。 到了2020年,因为扩张过度加上老鼠数量逐年减少,公司的发展遇到了前所未有的危机,此时集团已经

杭电ACM hdu 2082 找单词 解题报告(母函数)

Problem Description 假设有x1个字母A, x2个字母B,..... x26个字母Z,同时假设字母A的价值为1,字母B的价值为2,..... 字母Z的价值为26。那么,对于给定的字母,可以找到多少价值<=50的单词呢?单词的价值就是组成一个单词的所有字母的价值之和,比如,单词ACM的价值是1+3+14=18,单词HDU的价值是8+4+21=33。(组成的单词与排列顺序无关,比如

杭电ACM hdu 2079 选课时间 解题报告(母函数)

Problem Description 又到了选课的时间了,xhd看着选课表发呆,为了想让下一学期好过点,他想知道学n个学分共有多少组合。你来帮帮他吧。(xhd认为一样学分的课没区别)   Input 输入数据的第一行是一个数据T,表示有T组数据。 每组数据的第一行是两个整数n(1 <= n <= 40),k(1 <= k <= 8)。 接着有k行,每行有两个整数a(1 <= a <= 8),b

C#.net6.0+Vue+Ant-Design智慧医院手术麻醉系统源码 手术麻醉软件信息化管理系统 麻醉文书祥解

C#.net6.0+Vue+Ant-Design智慧医院手术麻醉系统源码  手术麻醉软件信息化管理系统 麻醉文书祥解 医护人员通过手麻信息系统可以进行手术的预约申请、受理、安排,从门诊医生下医嘱到发起手术申请、护士长审核通过,均实现了全流程信息化管理,大大减少了跨科室、跨部门的沟通成本和时间成本。 麻醉文书是整个医疗文书的重要组成部分,是对患者麻醉过程中所有情况的全面实时记录,麻醉医生必须

Ant Design Vue Cascader 级联选择 错位问题

当Cascader 多个的时候  对应的下列会错位  如果滚动 他不会跟着元素  而是会跟着屏幕滚动,如下效果 解决方法 在Cascader 标题添加 getPopupContainer 属性监听对应的位置,返回对应的元素 <a-cascader class="smart-width-100 " v-model:value="formData['specialistCategoryL

Apple - Core Foundation Design Concepts

本文翻译整理自:Core Foundation Design Concepts(更新日期:2013-12-16 https://developer.apple.com/library/archive/documentation/CoreFoundation/Conceptual/CFDesignConcepts/CFDesignConcepts.html#//apple_ref/doc/uid/1

Documentation_scheduler_sched-nice-design

Chinese translated version of Documentation/scheduler/sched-nice-design Documentation/scheduler/sched-nice-design 的中文翻译 If you have any comment or update to the content, please contact the original

[HDU 4855] Goddess (极角排序+三分)

HDU - 4855 借这道题学了下极角排序和三分求凸函数最大值 按所有左右切线,圆心的弧度值排序,从而分割出角度上的若干个区间 射线的角度在这些区间里变动时,每个割线的长度都是凸函数,叠加起来也是凸函数 所以可以对每个区间利用三分法求得最大值,再对这些最大值取 max 即为答案 1) 利用三分法可以求得单峰函数的最大值 2) 利用 atan2(y,x)可以比较方便地求出向量与 x轴正