Back to Leetcode

Readme

Binary_Search/2819.Minimum-Relative-Loss-After-Buying-Chocolates/Readme.md

latest987 B
Original Source

2819.Minimum-Relative-Loss-After-Buying-Chocolates

首先可以得出大致的策略,对于bob而言,要么选价格最便宜的(当价格p<k时,代价函数就是p本身),要么选价格最贵的(当价格p>k时,代价函数是2k-p). 所以,选择的m件商品,必然在价格轴上一部分选在最左边,另一部分选在最右边。

假设我们选t件最便宜的,剩下m-t件是最贵的,那么该如何确定t的个数呢?我们希望选择商品的代价尽量远离峰值(p=k处),所以希望price[t-1]2k-price[n-(m-t)]数值上尽量接近。否则因为t对两者影响的此消彼长,一方变低的话,另一方必然更高。所以我们尝试寻找最大的T,使得恰好price[T-1] < 2k-price[n-(m-T)]. 接下来,我们尝试T和T+1两个候选值,寻找两者之中能使总代价最优的解。总代价就是t件最便宜的代价prices[0:t-1]加上m-t件最贵的代价2k*(m-t) - prices[n-(m-t): n-1].