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

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

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;
}
相关推荐
拳里剑气7 小时前
C++算法:BFS解决FloodFill算法
c++·算法·bfs·宽度优先
wanderist.9 小时前
Lambda表达式在算法竞赛中的应用
java·开发语言·算法
稚南城才子,乌衣巷风流9 小时前
支配树(Dominator Tree)详解:概念、算法与应用
算法
稚南城才子,乌衣巷风流10 小时前
动态开点:原理、实现与应用场景
数据结构·算法
yyds_yyd_1008610 小时前
1464. 数组中两元素的最大乘积(2026.07.27)
数据结构·c++·算法·leetcode
KaMeidebaby11 小时前
卡梅德生物技术快报 | 核酸适配体文库测序:核酸适配体文库测序的技术原理、实验流程与数据解析
前端·网络·数据库·人工智能·算法
geovindu12 小时前
CSharp: Breadth First Search Algorithm and Depth First Search Algorithm
开发语言·后端·算法·c#·.net·搜索算法
ekkoalex13 小时前
训练框架以及算法实现的框架
算法
DFT计算杂谈13 小时前
交错磁研究进展材料物性与交叉应用
数据库·人工智能·python·opencv·算法