[绝对值不等式] 货仓选址(绝对值不等式+贪心)
文章目录
- 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∑nai−a2n=i=1∑nai−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;
}
[绝对值不等式] 货仓选址(绝对值不等式+贪心)相关推荐
- 每日四题打卡-4.15:耍杂技的牛/贪心绝对值不等式-货仓选址/贪心排序不等式-排队打水/huffman哈夫曼树-合并果子
耍杂技的牛 具体:https://blog.csdn.net/qq_27262727/article/details/105515507 农民约翰的N头奶牛(编号为1..N)计划逃跑并加入马戏团,为此 ...
- 贪心——绝对值不等式——货仓选址
货仓选址 对于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- ...
- 贪心绝对值不等式-货仓选址
在一条数轴上有 NN 家商店,它们的坐标分别为 A1A1~ANAN. 现在需要在数轴上建立一家货仓,每天清晨,从货仓到每家商店都要运送一车商品. 为了提高效率,求把货仓建在何处,可以使得货仓到每家商店 ...
- 023货仓选址(绝对值不等式)
题目描述: 在一条数轴上有 N 家商店,它们的坐标分别为 A1~AN. 现在需要在数轴上建立一家货仓,每天清晨,从货仓到每家商店都要运送一车商品. 为了提高效率,求把货仓建在何处,可以使得货仓到每家商 ...
- 104. 货仓选址——绝对值不等式的运用,中位数巧用
题目链接 文章目录 题解 AC代码 注意 题解 |a-x|+|b-x|>=|a-b| 当只有a,b两个商店时,仓库建在a,b之间可以取得最小值 扩展到n个物品的时候 当n为偶数时,ans=|x- ...
- [AcWing] 104. 货仓选址(C++实现)贪心---绝对值不等式例题
[AcWing] 104. 货仓选址(C++实现)贪心---绝对值不等式例题 1. 题目 2. 读题(需要重点注意的东西) 3. 解法 4. 可能有帮助的前置习题 5. 所用到的数据结构与算法思想 6 ...
- Acwing104. 货仓选址:贪心(绝对值不等式)
文章目录 题目分析 题目链接 题目分析 原题: 在一条数轴上有 N 家商店,它们的坐标分别为 A1~AN. 现在需要在数轴上建立一家货仓,每天清晨,从货仓到每家商店都要运送一车商品. 为了提高效率,求 ...
- 绝对值不等式 AcWing 104. 货仓选址
绝对值不等式 AcWing 104. 货仓选址 原题链接 AcWing 104. 货仓选址 算法标签 排序 快速选择算法 贪心 绝对值不等式 思路 排序后取中位数为货仓建立地点 证明 根据 则 等号成 ...
- [算法总结] 中位数+绝对值不等式 AcWing 104. 货仓选址
104. 货仓选址 思路: 排序之后取中位数 中位数的性质,所有数到他的和是最小的 大佬的话: 中位数有非常优秀的性质, 比如说在这道题目中, 每一个点到中位数的距离, 都是满足全局的最有性,而不是局 ...
最新文章
- pinpoint zipink skywalking
- LeetCode5382. HTML 实体解析器
- MySQL数据库如何杀死会话_如何彻底杀掉不良用户会话
- Nginx开启SSL支持实例配置
- LiveVideoStackCon深圳-发掘移动客户端更多可能
- Android 多选列表
- Java(多)线程中注入Spring的Bean
- STM32 的RAM跑到哪里去了
- PHP 反射机制Reflection
- 3_一幅图像,经过傅里叶变换后,将高频部分删除,再进行反变换,设想一下将会得到什么结果?...
- ABP理论之CSRF
- 软件测试——风险分析
- Web Moudle
- 【LeetCode】934. Shortest Bridge 解题报告(Python)
- HTML基于蔡徐坤的打飞机游戏源码
- 《数字经济》远光软件毕伟:数字化协同创新
- 地牢猎手显示无法连接服务器,地牢猎手5无法连接服务器
- flutter flutter_swiper自定义指示器
- npm太慢, 淘宝npm镜像使用方法
- 记录抓取soul app(一)