备战蓝桥杯:贪心算法之货仓选址

当我们货仓选址在最中间的时候,货仓到每家商店的距离最短

bash 复制代码
#include <iostream>
#include <cstdlib>
#include <algorithm>
typedef long long LL;
using namespace std;
int n;
const int N = 1e5+10;
LL a[N];
int main()
{
	cin >> n;
	for(int i = 1;i<=n;i++) cin >> a[i];
	sort(a+1,a+1+n);
	LL ret= 0;
	for(int i = 1;i<=n;i++) ret+=abs(a[i]-a[n/2]);
	cout << ret << endl;
	
	
	
	return 0;
}

贪心策略证明:

我们首先需要直到一个绝对值不等式的公式

|a-x|+|b-x| >= |a-b|

我们的代码也可以直接用这个公式来算

cpp 复制代码
#include <iostream>
#include <cstdlib>
#include <algorithm>
typedef long long LL;
using namespace std;
int n;
const int N = 1e5+10;
LL a[N];
int main()
{
	cin >> n;
	for(int i = 1;i<=n;i++) cin >> a[i];
	sort(a+1,a+1+n);
	LL ret= 0;
	for(int i = 1;i<=n/2;i++) ret+=abs(a[n-i+1]-a[i]);
	cout << ret << endl;
	
	
	
	return 0;
}
相关推荐
Jerry31 分钟前
LeetCode 1002. 查找共用字符
算法
无限的鲜花1 小时前
协程本质是函数加状态机——零基础深入浅出 C++20 协程
c++·算法·c++20
旖-旎1 小时前
《LeetCode 64 最小路径和 || LeetCode 174 地下城游戏》
c++·算法·leetcode·动态规划
森林古猿11 小时前
再论斜率优化
c++·学习·算法
万法若空2 小时前
【数学-简单数论】同余中的逆
线性代数·算法
凯瑟琳.奥古斯特2 小时前
力扣1009补码解法C++实现
开发语言·c++·算法·leetcode·职场和发展
KaMeidebaby3 小时前
卡梅德生物技术快报|蛋白的叠氮基修饰:实操解析:核酸模板耦合蛋白的叠氮基修饰实现靶蛋白定点共价标记
前端·人工智能·物联网·算法·百度
通信仿真爱好者4 小时前
第【60期】--大规模MIMO系统信号检测算法误码率比较 --matlab完整代码+参考文章
算法·matlab·mimo·信号检测
AI科技星4 小时前
全域谱分析:无穷维超复数信息场分形统一场论——自然、量子、金融多重分形第一性原理完整体系(中英双语终稿)
人工智能·python·算法·金融·乖乖数学·全域数学
先吃饱再说5 小时前
为什么堆能 O(log n) 插入?拆解完全二叉树的数组魔法
算法·排序算法