绝对值不等式(贪心)

简介: 复习acwing算法基础课的内容,本篇为讲解基础算法:贪心——绝对值不等式,关于时间复杂度:目前博主不太会计算,先鸽了,日后一定补上。

文章目录

前言

一、贪心

二、AcWing 104. 货仓选址

本题解析

AC代码

三、时间复杂度


前言

复习acwing算法基础课的内容,本篇为讲解基础算法:贪心——绝对值不等式,关于时间复杂度:目前博主不太会计算,先鸽了,日后一定补上。


一、贪心

贪心:利益最大化,即找到最优的情况,贪心问题难在证明,即你可能能推断出这个题目的正确解法,但是这个解法下为什么就是最优解不好证明。


二、AcWing 104. 货仓选址

本题链接:AcWing 104. 货仓选址

本博客提供本题截图:

image.png

本题解析

如果店铺的个数为奇数的时候,那么取最中间的店铺为距离之和最短:即选取(6 / 2)(0 ~ 6为7个店铺为奇数)

image.png

如果店铺的个数为偶数的时候,那么如下图所示的区间内的点都可以是我们货仓建立的地点,在这段区间内任何一点都有到所有店铺的距离之和最短:

image.png

那么为了我们方便代码的书写,取(7 / 3)的店铺,故综上所述,对于有这么n个排好序的店铺,我们都去(n / 2)号店铺作为货仓的地点即可

AC代码

#include <iostream>
#include <algorithm>
using namespace std;
const int N = 100010;
int n;
int q[N];
int main()
{
    scanf("%d", &n);
    for (int i = 0; i < n; i ++ ) scanf("%d", &q[i]);
    sort(q, q + n);
    int res = 0;
    for (int i = 0; i < n; i ++ ) res += abs(q[i] - q[n / 2]);
    printf("%d\n", res);
    return 0;
}

三、时间复杂度

关于贪心——绝对值不等式的时间复杂度以及证明,后续会给出详细的说明以及证明过程,目前先鸽了。



目录
相关文章
|
8月前
迭代法求一元三次方程
迭代法求一元三次方程
95 0
|
5月前
|
算法
【算法】二分算法——x的平方根
【算法】二分算法——x的平方根
|
机器学习/深度学习 算法
专题六数值微积分与方程求解-2
专题六数值微积分与方程求解
115 0
迭代法解决递推问题:数列和,sinx,ex的近似值
迭代法解决递推问题:数列和,sinx,ex的近似值
138 0
|
8月前
leetcode-990:等式方程的可满足性
leetcode-990:等式方程的可满足性
55 0
分治法求解中位数
分治法求解中位数
81 0
|
算法 Serverless
专题六数值微积分与方程求解-1
专题六数值微积分与方程求解
127 0
|
Python
递推方程
递推方程是一种数学方程,其中未知量的值被表示为先前已知量值的函数。递推方程通常具有递归的形式,即一个或多个变量被递归地定义为同一变量的函数。递推方程的一个关键特征是,解决方案通常可以通过迭代计算得到,而不是直接求解。递推方程广泛应用于数学、物理、计算机科学等领域。
123 0
|
人工智能 算法
排序不等式(贪心)
复习acwing算法基础课的内容,本篇为讲解基础算法:贪心——排序不等式,关于时间复杂度:目前博主不太会计算,先鸽了,日后一定补上。
111 0
排序不等式(贪心)
|
算法 C语言 C++
【算法练习】迭代法求平方根
【算法练习】迭代法求平方根
【算法练习】迭代法求平方根

热门文章

最新文章