推销员

这里如果按照距离来考虑就太复杂了,于是转化对象,考虑客户

证明:

假设我们选的疲劳值最大的前X个的最远的一个的距离为S1,那么可以知道,一定不会存在一个更优的方案,使得这个方案的最远的距离比S1要小

所以更优的方案的最远的距离肯定要比S1大,假设我们选择了一个比S1远的,距离为S2的住户作为这个方案的最远的住户,我们直接考虑在这个情形下的最优状态是什么。肯定是选择X1个住户,这些住户的距离小于S2,疲劳值尽可能大

那么肯定选择疲劳值前X1大的住户,就是最开始的方案去掉疲劳值最小的住户

插一句,这一道题目在做的时候,我从样例感觉出来了一个结论,就是X的决策一定包含X1的决策,考虑多增加哪一个住户就可以了

从部分题解来看,这个想法也是正确的,但是不知道怎么证明

update 2024.7.21

哎,想到了转换对象,将客户排序了,但是没有想到这么做啊。。。

update 2025.1.7

三个月没打代码了居然做出来了,我服了

心路历程:显然是转换对象,然后考虑客户,按照Ai排序,也是把距离忽略掉了,直接考虑X比较大的时候包含了最远的一个客户,于是显然就是选前X个客户;再去想X比较小的时候,这个时候肯定就是舍弃掉一些客户换成距离更大的客户,不难想到上面的做法

posted @   最爱丁珰  阅读(4)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 【译】Visual Studio 中新的强大生产力特性
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 【设计模式】告别冗长if-else语句:使用策略模式优化代码结构
点击右上角即可分享
微信分享提示