首页 > 编程语言 >[算法竞赛进阶指南]货舱选址

[算法竞赛进阶指南]货舱选址

时间:2023-03-20 15:06:13浏览次数:36  
标签:货仓 进阶 数轴 商店 int mid A1 选址 货舱


来源: 《算法竞赛进阶指南》, 模板题

算法标签 排序,贪心

题目描述

在一条数轴上有 N 家商店,它们的坐标分别为 A1~AN。

现在需要在数轴上建立一家货仓,每天清晨,从货仓到每家商店都要运送一车商品。

为了提高效率,求把货仓建在何处,可以使得货仓到每家商店的距离之和最小。

输入格式

第一行输入整数N。

第二行N个整数A1~AN。

输出格式

输出一个整数,表示距离之和的最小值。

数据范围

1≤N≤100000

输入样例:

4
6 2 9 1

输出样例:

12

思路

已知​​一条数轴上有 N 家商店,它们的坐标分别为 A1~AN​​​,求​​求把货仓建在何处,可以使得货仓到每家商店的距离之和最小?​​​ 当距离数组a[],目标点K。
(a[l]-k+a[r]-k)+(a[l+1]-k+a[r-1]-k)+…a[mid]-c;
则目标点C在(l+r<<1),(l-1+r-1<<1),mid,即C在中点时不等式最小。

以下从绘图角度来理解:

[算法竞赛进阶指南]货舱选址_i++

C++ 代码

#include<iostream>
#include<algorithm>

using namespace std;

typedef long long LL;
LL res;
const int N=1e5+10;
int a[N],mid;

int main()
{
int n;
cin>>n;
for(int i=0;i<n;i++)cin>>a[i];

sort(a,a+n);

mid=a[n/2];

for(int i=0;i<n;i++)res+=abs(mid-a[i]);

cout<<res;

return 0;
}


标签:货仓,进阶,数轴,商店,int,mid,A1,选址,货舱
From: https://blog.51cto.com/u_16014765/6132923

相关文章

  • 【Hive进阶】-- Hive SQL、Spark SQL和 Hive on Spark SQL
    1.HiveSQL1.1基本介绍概念Hive由Facebook开发,用于解决海量结构化日志的数据统计,于2008年贡献给Apache基金会。Hive是基于Hadoop的数据仓库工具,可以将结构化数据映射为......
  • Three.js 进阶之旅:物理效果-3D乒乓球小游戏
    声明:本文涉及图文和模型素材仅用于个人学习、研究和欣赏,请勿二次修改、非法传播、转载、出版、商用、及进行其他获利行为。摘要本文在专栏上一篇内容《Three.js进阶之......
  • 【JavaScript】50_终篇_编程进阶与BOM编程概览(3k字+)
    12、节点的复制使用cloneNode()方法对节点进行复制时,它会复制节点的所有特点包括各种属性这个方法默认只会复制当前节点,而不会复制节点的子节点可以传递一个true作为参数,......
  • java进阶 JDK7 -日期48
           packagecom.cyjt97.dt;importjava.util.Date;publicclassday{publicstaticvoidmain(String[]args){Datedt=newDate();......
  • java进阶 正则表达式 -常用47
           QQ的正则表达式验证:StringQQ="[0-9]\\d{4,11}";System.out.println("123456".matches(QQ));手机号验证:Stringphone="^(13[0-9]|14[......
  • java进阶 二分查找 46
        packagecom.cyjt97.bubbling;publicclassmid{publicstaticvoidmain(String[]args){intarr[]={11,22,33,44,55,66,77,88......
  • 【Python从入门到进阶】4、pycharm的安装及使用
    接上篇《​​3、运行python代码​​》上一篇我们学习了如何使用终端和执行文件运行python代码,本篇我们来学习python编程工具pycharm的安装及基本使用。一、IDE的概念上一篇......
  • 【Python从入门到进阶】2、Python环境的安装
    接上篇《​​1、初识Python​​》上一篇我们对Python这门编程语言进行了一个基本的了解,本篇我们来学习如何下载安装Python编程环境,以及如何使用pip管理Python包。本篇讲解......
  • 【Python从入门到进阶】10、流程控制语句-循环语句(for-while)
    接上篇《9、流程控制语句-条件语句(if-else)》上一篇我们学习了Python的控制流语句的概念,以及其中的条件语句(if/else),本篇我们来学习控制流语句中的循环语句(for/while)。......
  • ACP云原生容器工程师 - ACR进阶
    DevOpsDevOps是近年来非常火的概念,是一种重视开发人员和运维人员之间沟通合作的文化、运动或惯例。透过自动化“软件交付”和“架构变更”的流程,来使得构建、测试、发布软......