当前位置: 首页 > news >正文

算法题(145):货仓选址

审题:
本题需要我们找出距离之和的最小值

思路:
方法一:贪心

贪心策略:将货仓建立在所有商店的中间可以达到距离之和最小

因为每家商店都需要接收一车商品,所以这里的距离之和指的是从货仓到每一家商店的路线的距离之和

贪心证明:
数学公式:|a-x| + |b-x| >= |a-b|

这个公式的意思是数轴上的a,b两点分别和数轴上任意一点之间的距离之和不小于a,b之间的距离,即一点x到a,b两点的距离之和在x位于a,b之间时最短

总和等于每条路线之和,只要每组商店组的路线都是最小值,那么总和也就是最小值。

所以只要货仓位于所有商店组(以1号商店与n号商店为第一组,依次从前面和后面选商店组队)中间,就可以达到目的。

当商店为奇数个:我们将货仓选在最中间的那个商店位置

当商店为偶数个:我们将货仓选在中间靠左边或靠右边的商店位置都可以,为了与奇数个求法对齐,我们选择靠左边的

解题:

#include<iostream>
#include<algorithm>
using namespace std;
typedef long long ll;
const int N = 1e5 + 10;
int n;
int a[N];
ll cnt;
int main()
{cin >> n;for (int i = 1; i <= n; i++){cin >> a[i];}sort(a + 1, a + 1 + n);//升序排序for (int i = 1; i <= n; i++){cnt += abs(a[i] - a[(1 + n) / 2]);}cout << cnt << endl;return 0;
}

相关文章:

  • SpringAI框架中的RAG模块详解及应用示例
  • Halcon案例(一):C#联合Halcon识别路由器上的散热孔
  • 定时器设计
  • python打包成exe
  • 中国古代史4
  • Vue 3 实现转盘抽奖效果
  • 对抗进行性核上性麻痹,健康护理筑牢生活防线
  • 大数据课设——基于电影数据集,分析导演影响力,绘制各种可视化图表
  • python练习-20250512
  • Jupyter-AI Pandas-AI本地使用功能优化
  • 【A2A】根据A2A的协议标准,不同架构的2个大模型agent的交互,是否都需要实现和对接 client和server模块?
  • 8天Python从入门到精通【itheima】-1~5
  • 前端面试每日三题 - Day 31
  • 基于 ABP vNext 框架实现高可用高性能的 Modbus 通信网关
  • Python实例题:pygame开发打飞机游戏
  • 【LeetCode】49.字母异位词分组
  • leetcode 18. 四数之和
  • 【Linux】进程状态、优先级、切换和调度
  • 三、transformers基础组件之Model
  • 判断一个数组有没有重复值
  • 外交部:正确认识和对待历史是检验日本能否恪守和平发展承诺的重要标准
  • 科普|“小”耳洞也会引发“大”疙瘩,如何治疗和预防?
  • 商务部新闻发言人就中美日内瓦经贸会谈联合声明发表谈话
  • 梅花奖在上海|“我的乱弹我的团”,民营院团首次入围终评
  • 中美经贸高层会谈在日内瓦结束,中国代表团将举行发布会
  • 匈牙利史专家阚思静逝世,享年87岁