当前位置: 首页 > 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;
}

http://www.dtcms.com/a/187130.html

相关文章:

  • 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
  • 判断一个数组有没有重复值
  • PID与模糊PID系统设计——基于模糊PID的水下航行器运动控制研究Simulink仿真(包含设计报告)
  • 基于STM32、HAL库的BMP388 气压传感器 驱动程序设计
  • Blender 入门教程(一):模型创建
  • vue-pdf-embed预览PDF
  • 基于SpringBoot的校园周边美食探索及分享平台【附源码+数据库+文档下载】
  • 什么是内存刷新
  • 视频翻译软件有哪些?推荐5款视频翻译工具[特殊字符][特殊字符]
  • 各类型和字节数组互相转换
  • #将一个 .c 文件转变为可直接运行的文件过程及原理
  • 处理均值的配对比较