文章目录

  • 0. 前言
  • 1. 排序不等式+贪心

0. 前言

最最最经典的绝对值不等式问题,有很多变种。这个题是最裸的模板题了。

1. 排序不等式+贪心

104. 货仓选址

贪心思路:

  • 按照商店坐标从小到大排序,选择中位数

证明:

  • 假设商店已经按照从小到大排序,记为 x1,x2,x3,...,xnx_1, x_2,x_3,...,x_nx1​,x2​,x3​,...,xn​,货仓在 xxx 位置。那么可计算得到总的距离之和为 f(x)=∣x1−x∣+∣x2−x∣+...+∣xn−x∣+f(x)=\mid x_1 -x\mid+\mid x_2 -x\mid+...+\mid x_n -x\mid+f(x)=∣x1​−x∣+∣x2​−x∣+...+∣xn​−x∣+简单调整,得:f(x)=(∣x1−x∣+∣xn−x∣)+(∣x2−x∣+∣xn−1−x∣)+...f(x)=(\mid x_1 -x\mid+\mid x_n -x\mid)+(\mid x_2 -x\mid+\mid x_{n-1} -x\mid)+...f(x)=(∣x1​−x∣+∣xn​−x∣)+(∣x2​−x∣+∣xn−1​−x∣)+... 由简单的高中数学知识可知,∣a−x∣+∣b−x∣\mid a -x\mid+\mid b-x\mid∣a−x∣+∣b−x∣ 若求其最小值,可以数形结合转化为数轴上有点 a、ba、ba、b,再给一点 xxx,求 xxx 到 a、ba、ba、b 点的距离之和。则 xxx 可能出现在 a、ba、ba、b 点两侧和中间,总共三种位置关系。其中出现在中间的时候距离之和最小,即为 ∣a−b∣\mid a-b\mid∣a−b∣ 。则简单放缩有:f(x)=(∣x1−x∣+∣xn−x∣)+(∣x2−x∣+∣xn−1−x∣)+...f(x)=(\mid x_1 -x\mid+\mid x_n -x\mid)+(\mid x_2 -x\mid+\mid x_{n-1} -x\mid)+...f(x)=(∣x1​−x∣+∣xn​−x∣)+(∣x2​−x∣+∣xn−1​−x∣)+... ≥(xn−x1)+(xn−1−x2)...\ge (x_n-x_1)+(x_{n-1}-x_2)...≥(xn​−x1​)+(xn−1​−x2​)...等号成立的条件是中位数 xxx 在两点之间,针对所有绝对值不等式等号成立
  • 如果是奇数个商店,则排序后直接取到中位数,数组下标从 0 开始,则为 n−12\frac {n - 1} 22n−1​,或者 C++ 除法自动向下取整,则 n2\frac {n} 22n​
  • 如果是偶数个商店,排序后取到左中位数与右中位数均可 n−12\frac {n - 1} 22n−1​ 或者 n2\frac {n} 22n​
  • 统一起来就是,n2\frac {n} 22n​。千万别写成 n2−1\frac {n} 2 - 12n​−1…

中位数公式: min∑in∣A−xi∣min\sum_i^n\mid A-x_i\midmin∑in​∣A−xi​∣ 则,AAA 为 xix_ixi​ 的中位数

本题可以拓展为二维求曼哈顿距离可以排序来做,但若是欧几里得距离则是一个经典求费马点的问题,采用的是随机算法,没有一般的优秀求法。

关于这个问题的证明,出了采用绝对值不等式来进行公式证明,还有微扰法可以证明。

abs(a[i] - a[n >> 1]) 改为 abs(a[i] - a[i >> 1]) 也可以 AC。可以证明 ∑i=1nai−an2=∑i=1nai−ai2\sum_{i=1}^n a_i-a_\frac n 2=\sum_{i=1}^na_i-a_\frac i 2i=1∑n​ai​−a2n​​=i=1∑n​ai​−a2i​​

贴一份来自大佬的证明(奇数情况,偶数情况同理可证):

代码:

#include <iostream>
#include <algorithm>using namespace std;const int N = 1e5+5;int n;
int a[N];int main() {cin >> n;for (int i = 0; i < n; ++i) cin >> a[i];sort(a, a + n);int res = 0;for (int i = 0; i < n; ++i) res += abs(a[i] - a[n / 2]);cout << res << endl;return 0;
}

[绝对值不等式] 货仓选址(绝对值不等式+贪心)相关推荐

  1. 每日四题打卡-4.15:耍杂技的牛/贪心绝对值不等式-货仓选址/贪心排序不等式-排队打水/huffman哈夫曼树-合并果子

    耍杂技的牛 具体:https://blog.csdn.net/qq_27262727/article/details/105515507 农民约翰的N头奶牛(编号为1..N)计划逃跑并加入马戏团,为此 ...

  2. 贪心——绝对值不等式——货仓选址

    货仓选址 对于a,b两点 L=|x-a|+|x-b|,最优解一定在a和b之间 L>=b-a f(x)=|x1-x|+|x2-x|+--+|xn-x| =(|x1-x|+|xn-x|)+(|x2- ...

  3. 贪心绝对值不等式-货仓选址

    在一条数轴上有 NN 家商店,它们的坐标分别为 A1A1~ANAN. 现在需要在数轴上建立一家货仓,每天清晨,从货仓到每家商店都要运送一车商品. 为了提高效率,求把货仓建在何处,可以使得货仓到每家商店 ...

  4. 023货仓选址(绝对值不等式)

    题目描述: 在一条数轴上有 N 家商店,它们的坐标分别为 A1~AN. 现在需要在数轴上建立一家货仓,每天清晨,从货仓到每家商店都要运送一车商品. 为了提高效率,求把货仓建在何处,可以使得货仓到每家商 ...

  5. 104. 货仓选址——绝对值不等式的运用,中位数巧用

    题目链接 文章目录 题解 AC代码 注意 题解 |a-x|+|b-x|>=|a-b| 当只有a,b两个商店时,仓库建在a,b之间可以取得最小值 扩展到n个物品的时候 当n为偶数时,ans=|x- ...

  6. [AcWing] 104. 货仓选址(C++实现)贪心---绝对值不等式例题

    [AcWing] 104. 货仓选址(C++实现)贪心---绝对值不等式例题 1. 题目 2. 读题(需要重点注意的东西) 3. 解法 4. 可能有帮助的前置习题 5. 所用到的数据结构与算法思想 6 ...

  7. Acwing104. 货仓选址:贪心(绝对值不等式)

    文章目录 题目分析 题目链接 题目分析 原题: 在一条数轴上有 N 家商店,它们的坐标分别为 A1~AN. 现在需要在数轴上建立一家货仓,每天清晨,从货仓到每家商店都要运送一车商品. 为了提高效率,求 ...

  8. 绝对值不等式 AcWing 104. 货仓选址

    绝对值不等式 AcWing 104. 货仓选址 原题链接 AcWing 104. 货仓选址 算法标签 排序 快速选择算法 贪心 绝对值不等式 思路 排序后取中位数为货仓建立地点 证明 根据 则 等号成 ...

  9. [算法总结] 中位数+绝对值不等式 AcWing 104. 货仓选址

    104. 货仓选址 思路: 排序之后取中位数 中位数的性质,所有数到他的和是最小的 大佬的话: 中位数有非常优秀的性质, 比如说在这道题目中, 每一个点到中位数的距离, 都是满足全局的最有性,而不是局 ...

最新文章

  1. pinpoint zipink skywalking
  2. LeetCode5382. HTML 实体解析器
  3. MySQL数据库如何杀死会话_如何彻底杀掉不良用户会话
  4. Nginx开启SSL支持实例配置
  5. LiveVideoStackCon深圳-发掘移动客户端更多可能
  6. Android 多选列表
  7. Java(多)线程中注入Spring的Bean
  8. STM32 的RAM跑到哪里去了
  9. PHP 反射机制Reflection
  10. 3_一幅图像,经过傅里叶变换后,将高频部分删除,再进行反变换,设想一下将会得到什么结果?...
  11. ABP理论之CSRF
  12. 软件测试——风险分析
  13. Web Moudle
  14. 【LeetCode】934. Shortest Bridge 解题报告(Python)
  15. HTML基于蔡徐坤的打飞机游戏源码
  16. 《数字经济》远光软件毕伟:数字化协同创新
  17. 地牢猎手显示无法连接服务器,地牢猎手5无法连接服务器
  18. flutter flutter_swiper自定义指示器
  19. npm太慢, 淘宝npm镜像使用方法
  20. 记录抓取soul app(一)

热门文章

  1. LAYOUT BGA布线规则
  2. 计算机教师继续教育心得,教师继续教育心得体会
  3. 关于文献阅读和寻找新的科研题目
  4. 多普达830玩友玩祖玛的时候要小心啊
  5. 《网络安全法》内容以及解读
  6. 【转载】自然界通用的“质子缓存”模型
  7. [python] 做一个写诗歌的网页
  8. python翻译成中文_Python调用有道智云文本翻译API接口实现“智能”伪原创
  9. 分布式GK Summary算法
  10. cve-2005-1794