3400 Line belt (hdu)

该博客介绍了如何运用三分算法解决一个二维平面上的路径规划问题。从点A到点D,行进速度在线段AB上为P,在线段CD上为Q,其余地方为R。博主通过分析发现,最短路径要么沿着AB、CD,要么是连接这两线段的直线。利用黑塞矩阵判断函数性质,确定使用三分查找在AB和CD上找到最短时间的点。博客中提到了在实现过程中遇到的错误和调试经验。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

题意理解

二维平面有两条线段AB,CD,现在从A走到D,在AB线段上的速度为P,CD线段上的速度为Q,非线段上的速度为R,求A走到D最短时间?A,B,C,D坐标已知,P、Q、R速度已知。

问题分析

用三分算法

浆糊题,乍一看走法几乎没限制。穷举基本没戏。找规律先。不管怎么走我只能三种选择,沿着AB走直线,沿着CD走直线,除了AB,CD外走,线段外的部分不可能走弯的路线,两点之间直线最短,比如走的直线,那么时间最短的线路,如果走了AB,CD之外的路线,那么必定是连接AB,CD的线段。问题就演化成,分别找AB,CD上的一个点,记为E,F,使得走完AE,EF,FD用时最短。

路线问题清楚了,下面是分析这个路线函数是什么性质,单调还是有最值?自变量设为k1,k2,k1=AE/AB,k2=FD/CD。这样函数表示成二元函数,判断二元函数的极值可以利用黑塞矩阵判定多元函数的极值。这个函数是正定的,存在极值点。(看了讨论版才知道的)

https://baike.baidu.com/item/%E9%BB%91%E5%A1%9E%E7%9F%A9%E9%98%B5/2248782?fr=aladdin

 

三分登场:单调用2分,极值用三分。本题用三分再三分。一个三分比较好理解,三分再三分的思路是先定AB上两个三分点,逐个遍历,对于每个三分点,找出CD上时间最短的点。(在CD上找时间最短的点也是用三分)。然后比较这两个三分点计算的时间值,将较大的点的外围切掉,缩小范围。直到找到AB上的时间最短的点。

调试出现错误的地方是,计算两个三分点最短时间时,忘记了比较时间大小,直接返回了T1导致已知WA。

三分的分法,一开始想到的是a + (b-a)/3 和b-(b-a)/3,一直WA,后来看别人答案,才知道要(a+b)/2 和((a+b)/2 + b)/2才可以。不明白原因。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值