【每日一题】5月8日题目精讲 贪心

题号 NC14844
名称 codeJan与旅行
来源 Wannafly挑战赛7
戳我进入往期每日一题汇总贴~
往期每日一题题单

图片说明

如果你在题库做题时遇到了喜欢的题目,欢迎推荐给邓老师~ 点击查看详情

这题中,我们不难证明,那么最后我们一定会在两个点直接徘徊或者直达某个点。
证明如下:
若不在两点间徘徊有最短距离,设我们走的点的序列为: (对于)
那么走的距离就是:
那么,对于其中的最小的那个来说
我们如果一直在两个点间徘徊直到走的点的个数等于这个策略用的距离就是:
明显的这个距离是小于等于上面的距离的,与我们假设不符合,所以,我们最后一定是在两点间徘徊的(若k=t的话,就是直达某个点了)
所以,我们可以考虑枚举在哪两个点间徘徊,那么,我们只需要枚举在i和i+1两个点间徘徊就行了,计算也很简单,答案取最小即可
但是,我们提交上去后,wa了,为啥?
看hack数据。
我们发现,我们最佳是在10和14两点之间徘徊,但是,我们可以在一开始的时候,先从p走到1,再从1走到10,开始徘徊,这样,我们就可以少徘徊一次,而我们从p走到1再到p,只用了2步,而徘徊一次需要4步,所以,我们如果先到1再从1到p的话,可以少走2步!
其实,分析式子的话也可以发现策略的不足。
因为,我们的式子其实只保证了这部分的距离是最小的,然而,前面我们走的是否最小却不能保证。
所以,我们每次再尝试先从p走到附近的一个点,再走到我们枚举的徘徊点看看这种策略是否可以使得距离更小。
可能有人会问,如果我走到附近两个或多个点,再到p,是否可能距离更小?
答案是不会的,因为,如果你走到附近两个或多个点后距离比我们当前算的更小。(为了方便说明我们只弄两个点设为x,y)
那么当且仅当,我们从x到y的距离小于我们枚举的徘徊的两个点之间的距离(化下式子就可以得出,我懒得化了qwq)
于是乎,我们发现,当我们枚举在x和y两个点徘徊时,答案就比上面我们那个策略还优,所以,我们不需要枚举先走到附近两个及以上的点再跑到目标点徘徊。

感谢@ThinkofBlank同学提供的精彩题解~
欢迎各位大佬来做题写题解,也欢迎大家踊跃在当日讨论贴中提问!

活动奖励:

在牛客博客中写出题解,并回复地址
审核通过可获得(依据题目难度和题解的内容而定)

本道题目5月15日中午12:00之前写的题解有获得牛币资格~

.牛币兑换中心

牛客博客开通方式

  1. 如何开通牛客博客:https://www.nowcoder.com/discuss/202952
  2. 如何使用博客搬家功能:进入博客--->设置--->底部博客搬家
  3. 如果你对牛客博客有任何意见或建议:牛客博客意见反馈专贴
全部评论
https://blog.nowcoder.net/n/0f80e75b574e4e7f942e0d46b9166bbc
1 回复 分享
发布于 2020-05-07 20:59
https://blog.nowcoder.net/n/cb2b61f48b74434d85256f6384627d79
1 回复 分享
发布于 2020-05-13 15:12
点赞 回复 分享
发布于 2020-05-07 10:34
点赞 回复 分享
发布于 2020-05-07 10:50
写题是不可能写题的,只能抢抢楼
点赞 回复 分享
发布于 2020-05-07 11:20
https://blog.nowcoder.net/n/a9b6ac4478c34e30bf8de38bdb6d567f
点赞 回复 分享
发布于 2020-05-07 11:20
https://blog.nowcoder.net/n/fd5f1f50db234f26bf4fb0894ba59224
点赞 回复 分享
发布于 2020-05-07 12:19
https://blog.nowcoder.net/n/0e9a7220e3d4479b897c819fb74179dc 坐等题解
点赞 回复 分享
发布于 2020-05-07 16:06
https://blog.nowcoder.net/n/7b30036725c7434fa00a512739afc6cd就像赚个杯子
点赞 回复 分享
发布于 2020-05-07 19:35
https://blog.nowcoder.net/n/5620d0f21abf49b1972625f2a930faec
点赞 回复 分享
发布于 2020-05-07 22:13
https://blog.nowcoder.net/n/2159ce519588401e9770b6d3519cb669  感觉写的比较详细
点赞 回复 分享
发布于 2020-05-07 22:14
https://blog.nowcoder.net/n/8c74cea3fab0437daa085544655b06de
点赞 回复 分享
发布于 2020-05-08 12:41
https://blog.nowcoder.net/n/883510052ac44a459c745f0cc04b1a18
点赞 回复 分享
发布于 2020-05-08 16:17
https://blog.nowcoder.net/n/e59b1656414b485ba628729b3be26ce5
点赞 回复 分享
发布于 2020-05-08 17:13
https://blog.nowcoder.net/n/4854517baac44271aecc54f19ad0a6f0
点赞 回复 分享
发布于 2020-05-10 14:57
https://blog.nowcoder.net/n/62e94f4864754a249e35a4d5045a82dc
点赞 回复 分享
发布于 2020-05-10 17:02
https://blog.nowcoder.net/n/417d57a9df65454e97b234951bc8a3a6
点赞 回复 分享
发布于 2020-05-12 15:14
https://blog.nowcoder.net/n/0e0b2c1f60904b2082ef8b353dba28a6
点赞 回复 分享
发布于 2020-05-12 16:15
https://blog.nowcoder.net/n/771f9e8d9aee4221a2fd4be8bb9e8ba2
点赞 回复 分享
发布于 2020-05-13 21:26
https://blog.nowcoder.net/n/013e6c5cf6c24ae6845a13064e444590
点赞 回复 分享
发布于 2020-05-15 17:40

相关推荐

11-09 14:54
已编辑
华南农业大学 产品经理
大拿老师:这个简历,连手机号码和照片都没打码,那为什么关键要素求职职位就不写呢? 从上往下看,都没看出自己到底是产品经理的简历,还是电子硬件的简历? 这是一个大问题,当然,更大的问题是实习经历的描述是不对的 不要只是去写实习流程,陈平,怎么去开会?怎么去讨论? 面试问的是你的产品功能点,是怎么设计的?也就是要写项目的亮点,有什么功能?这个功能有什么难处?怎么去解决的? 实习流程大家都一样,没什么优势,也没有提问点,没有提问,你就不得分 另外,你要明确你投的是什么职位,如果投的是产品职位,你的项目经历写的全都是跟产品无关的,那你的简历就没用 你的面试官必然是一个资深的产品经理,他不会去问那些计算机类的编程项目 所以这种四不像的简历,在校招是大忌
点赞 评论 收藏
分享
点赞 1 评论
分享
牛客网
牛客企业服务