P2672 [NOIP2015 普及组] 推销员 题解

题目传送门:P2672 [NOIP2015 普及组] 推销员


前言:本文面向所有初学者,所以节奏比较缓慢。

标签:贪心

目录:分析,证明,细节处理


简单概括题意,本题推销员阿明,要给住在某街的N个用户推销,走一米会增加1的疲劳值,第i家距离路口 s i s_i si 米(可能会有重复的 s i s_i si )给第 i i i 家推销会增加 a i a_i ai 。全部推销完,还要原路返回。现在,依次向 X X X 用户推销,对于不同的 X X X ,阿明想知道最大疲劳值。


S t e p Step Step O n e One One

分析:既然想知道最大疲劳值,就有可能是去尽可能疲劳值大的人家,和的人家,那么如何平衡这两个最优呢?这就是本题的关键。

我们不妨优先选择去疲劳值大的人家,所以先进行排序。当我们已经决策完第 X X X家的时候,这并不一定是最优解,因为我们有可能可以通过去更远的人家从而使得疲劳值总和大过前者。那么我们是否能找到一种关于这种情况的贪心结论呢?

可以。答案是先存储答案,再判断将第 X X X位舍去,去到最远(指距离和疲劳值综合)的点,将这两个答案进行比较,大者为答案,然而无论去到哪一个点,都是不存在后效性的,所以放心大胆的做就可以了。


S t e p Step Step T w o Two Two

证明:如何证明上述结论是正确的?请思考,当我们将第 X X X位舍去,去选择一个最远的点,此刻我们已经享用了这个最远的点的双倍距离的增益,当我们想舍去第 X − 1 X-1 X1位从而让疲劳值总和更大时,由于我们已经选择了最远的点,距离已经存过了,所以这一步对我们的贡献只是从一个大疲劳值变成了一个小疲劳值,显然是不优的。

为了方便理解,这里进行举例。

第零步:输入

5
1 2 3 5 4
5 4 3 1 2

第一步:排序

5
1 2 3 4 5
5 4 3 2 1

第二步:枚举 X X X

  1. X = 1 X=1 X=1 A n s 1 Ans1 Ans1为直接选择最大疲劳值: 5 5 5,随后加上最大距离的二倍即 1 × 2 = 2 1 \times 2=2 1×2=2 , A n s 1 = 5 + 2 = 7 Ans1=5+2=7 Ans1=5+2=7 , A

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值