首页 > 其他分享 >[???] 带权中位数

[???] 带权中位数

时间:2022-11-07 21:48:17浏览次数:30  
标签:每个 sum 中位数 times 带权 人数

好像是某道CF问题的变形, 记一下.

题目描述

有若干的排列在一条直线上的点\(p_i\), 每个点上有\(a_i\)个人, 找出一个点, 使得所有人移动带这个人的位置上的总距离最小.

结论. 从左到右累加人数, 寻找刚刚过半的人数.
证明. (扰动法) 若\(\sum_{i=1}^{x-1}<\sum a_i /2\), \(\sum_{i=1}^{x}\geq\sum a_i /2\), 这个\(x\)就是要求的. 假设所有人集合到\(p_x\)走的总距离是\(A\), 记作\(D(x)\).

考虑$$D(x-1)=\sum_{i=1}^{x-1}a_i\times|p_x-p_{x-1}| + \sum_{i=x}^{n}a_i\times|p_x-p_{x-1}|.$$

由于左边的人数小于一半, 这样调整之后的人数只会增加. 所以会更劣.

同理可证右半边.

拓展.

如果每个人还有一个等待时间.
结论. 把每个人拆成两个, 一个左边, 一个右边, 也是正确答案.

标签:每个,sum,中位数,times,带权,人数
From: https://www.cnblogs.com/augpath/p/16867566.html

相关文章

  • P1627 [CQOI2009] 中位数
    Idea注意到中位数只关心数据的相对大小,因此考虑从目标数字开始往两边求前/后缀和,接下来使用乘法原理来进行组合即可.可以用map统计.第一次感觉只要看一看扩展,当时......
  • 寻找两个正序数组的中位数
    题目给定两个大小分别为m和n的正序(从小到大)数组 nums1和 nums2。请你找出并返回这两个正序数组的中位数。算法的时间复杂度应该为O(log(m+n))。示例1:输......
  • 剑指offer——数据流中的中位数
    题目描述:如何得到一个数据流中的中位数?如果从数据流中读出奇数个数值,那么中位数就是所有数值排序之后位于中间的数值。如果从数据流中读出偶数个数值,那么中位数就是所有数......
  • 取m和n的中位数溢出解决办法
    在LeetCode上刷一道二分的简单题,需要计算m和n的中位数。通常的想法是直接如下即可:intmid=(m+n)/2;然而​​mid​​​存在溢出的风险,一种简单的解决办法是把​​mid......
  • 【XSY2416】带权图(图论,高斯消元)
    感觉非常高妙。考虑暴力做法。首先对于题目中的第三种限制:若两个环满足,那么这两个环拼起来得到的环肯定也满足。那么我们可以只考虑那些互相独立的简单环。随便找到原......
  • PAT_甲级_1029 Median (25分) (C++)【求中位数/递增序列合并】
    目录​​1,题目描述​​​​题目大意​​​​2,思路​​​​3,代码​​1,题目描述SampleInput:4111213145910151617 SampleOutput:13题目大意求两递增序列的中位数(......
  • 力扣-4-寻找两个正序数组的中位数
    中位数的定义是什么?有序数列中位置中间的数字如果中间位置有两个返回则他们的平均值,所以这里的返回值是个double要求时间复杂度为log(m+n),也就是说只对两个数组做一次遍......
  • 寻找两个正序数组的中位数
    给定两个大小分别为 m 和 n 的正序(从小到大)数组 nums1 和 nums2。请你找出并返回这两个正序数组的 中位数 。算法的时间复杂度应该为 O(log(m+n)) 。 示例......
  • 4. 寻找两个正序数组的中位数
    给定两个大小分别为m和n的正序(从小到大)数组 nums1和 nums2。请你找出并返回这两个正序数组的中位数。算法的时间复杂度应该为O(log(m+n))。示例1:输入:nums1......
  • #yyds干货盘点# LeetCode 腾讯精选练习 50 题:寻找两个正序数组的中位数
    题目:给定两个大小分别为m和n的正序(从小到大)数组 nums1和 nums2。请你找出并返回这两个正序数组的中位数。算法的时间复杂度应该为O(log(m+n))。 示例1:输入:num......