首页 > 货仓选址
头像 在刷题的单身狗很开心
发表于 2023-08-02 22:30:39
链接:https://ac.nowcoder.com/acm/problem/50937 来源:牛客网 题目描述 在一条数轴上有N家商店,它们的坐标分别为 A[1]~A[N]。现在需要在数轴上建立一家货仓,每天清晨,从货仓到每家商店都要运送一车商品。为了提高效率,求把货仓建在何 展开全文
头像 RandolphJ
发表于 2019-12-08 13:24:15
题目链接 假设把货仓建在第k个商店的坐标上,那么左边有 k - 1 个商店,右边有 n - k - 1 个商店。 当k<n/2时,向右移一位,因为k-1<n-k-1,所以+(k-1)-(n-k-1)会使总距离减小,因此我们应当把k往右移,直到当 k-1 = n-k-1时,若再往右移,k- 展开全文
头像 -符拉迪沃斯托克-
发表于 2022-07-15 12:50:34
如果是个明眼人,可以看出来选中位数一定是最优解,此时答案一定是后一半的和减去前一半的和,即∑i=1n/2(vn−i+1−vi)\sum_{i=1}^{{n}/{2}}(v_{n-i+1}-v_i)∑i=1n/2​(vn−i+1​−vi​)。 但是像我这样的大制杖就只能硬证。。。 我们求的是: min 展开全文
头像 coco2009
发表于 2020-01-19 10:05:17
这题一看就是排序,这里就说一下我的思路:首先将a数组排序,并令x为货仓的坐标,尽量使x左侧的商店与x右侧的商店之差尽量小,也就是说将x放在中位数的位置最好,中位数的坐标也就是a[(n+1)/2],接着自然就附代码了。#include<bits/stdc++.h>using namespa 展开全文
头像 屡战屡败的弱鸡
发表于 2019-10-08 17:28:38
直观的想,假设我们将货仓建在第k个商店的坐标上,那么货仓左边有 k - 1 个商店,右边有 n - k - 1 个商店,当我们将货仓向右移动一个单位,那么货仓距离左面所有的商店的距离就会增加一个单位,距离右面所有的商店的距离会减少一个单位,所以应当使左右商店的个数相同, k-1 = n-k-1, 那 展开全文
头像 Fss1
发表于 2025-03-14 11:30:22
一种前缀和的解法 假如我们并不知道中位数就是最优解 先看暴力枚举的思路 1-index数组a存储货仓的坐标 先给a排个序 for i := 1 to n a[i]距离左边货仓j: a[i] - a[j] 距离左边所有货仓就是 a[i] - (a[1] + a[2] +... + a[i - 1]) 展开全文
头像 XG0701
发表于 2024-10-15 12:19:22
注意点: (1)最优位置是选在左中位数或右中位数处 (2)如果不在这两点,左右移动时增加的距离会大于减小的距离 N = int(input()) a = list(map(int, input().split())) a.sort() print(sum(abs(x - a[N // 2]) for 展开全文
头像 zzhaire
发表于 2025-02-25 12:09:58
思路 找中间点, 奇数则找这个点, 偶数则在中间随便取一个点就行, 或者端点也可以 把距离加起来就ok了 这个题也是acwing 基础课的模板题 ac 代码 #include <bits/stdc++.h> using namespace std; const int N = 1e5 + 展开全文
头像 haust_xiaolu
发表于 2020-11-21 10:46:27
题目描述:在一条数轴上有N家商店,它们的坐标分别为 A[1]A[N]。现在需要在数轴上建立一家货仓,每天清晨,从货仓到每家商店都要运送一车商品。为了提高效率,求把货仓建在何处,可以使得货仓到每家商店的距离之和最小。输入排序:第一行一个整数N,第二行N个整数A[1]A[N]。输出排序:一个整数,表示距 展开全文
头像 小吉蛋
发表于 2020-11-15 13:16:51
链接:https://ac.nowcoder.com/acm/contest/1001/B来源:牛客网 题目描述在一条数轴上有N家商店,它们的坐标分别为 A[1]~A[N]。现在需要在数轴上建立一家货仓,每天清晨,从货仓到每家商店都要运送一车商品。为了提高效率,求把货仓建在何处,可以使得货仓到每家商 展开全文

等你来战

查看全部