中位数定理:小试牛刀> _ <2025牛客寒假1

给定数轴上的n个点,找出一个到它们的距离之和尽量小的点(即使我们可以选择不是这些点里的点,我们还是选择中位数的那个点最优)
结论:这些点的中位数就是目标点。可以自己枚举推导(很好想)
(对于 点的数量为奇数,是排序之后最中间的数 ,对于点的数量为偶数的情况下,中间两个点 都可以,他俩的答案是相同的,可以简单的画图证明,或者直接抽象一点的想:假设这两个点分别为A B他们之间的距离为d,A相对于B 来说,左侧的点都减少d ,右侧的点都增加d .又因为A左侧的点的个数等于B 右侧的点,所以A B 的值相同)

板子题

void solve()
{
   
    int n;cin>>n;
    vector<int>a(n);
    for (int i=0;i<n;i++)
    {
   
        cin>>a[i];
    }
    sort(a.begin(),a.end());
    int ans=0;
    for (int i =0;i<n;i++)
    {
   
        ans+=abs(a[i]-a[n>>1]);
    }
    cout<<ans
### 2025寒假算法训练营详情 #### 训练营概述 2025年的寒假算法训练营旨在帮助参赛者提升编程能力和解决复杂问题的能力。该系列训练营涵盖了多个不同难度级别的题目,适合各个层次的学习者参与。 #### D题挑战 在2025年的训练营中,D题被认为是一个特别具有挑战性的题目[^3]。许多选手在这个题目上遇到了困难,尤其是在时间效率方面。一些参与者提到,在尝试使用莫队算法解决问题时遭遇了超时错误(Time Limit Exceeded, TLE),这表明可能需要更优化的数据结构或算法来处理这个问题。 #### C题解析 关于C题,虽然具体的题目细节未完全给出,但从描述来看,此题提供了多种解法的可能性。这类题目通常鼓励参赛者探索不同的思路和技术路径,从而找到最有效的解决方案。 #### 解决方案策略 针对某些特定类型的题目,如涉及到数组操作的情况,一种常见的策略是通过调整序列中的元素使其接近某个目标值——比如中位数。具体来说,可以通过改变前半部分的数值使之等于中位数减去一,或者是让后半部分变为中位数加上一;然后对比两种情况下的结果选取最佳选项[^4]。 ```python def optimize_sequence(nums): median = sorted(nums)[len(nums) // 2] option1_cost = sum(abs(x - (median - 1)) for x in nums[:len(nums)//2]) option2_cost = sum(abs(x - (median + 1)) for x in nums[len(nums)//2:]) return min(option1_cost, option2_cost) ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值