当前位置: 首页 > news >正文

题解:CF2157D Billion Players Game

提供一种单组数据 \(\mathcal O(n)\) 的做法。

先把绝对值去掉,这样每个下注建议就是在 \(\{x-a_i,a_i-x,0\}\)(假设最终排名为 \(x\))选一个。

若选择 \(\{x-a_i,a_i-x,0\}\) 的建议集合分别为 \(A,B,C\),那么最终收益为:

\[f(x)=\sum_{i\in A} (x-a_i)+\sum_{i\in B} (a_i-x) \]

\(x\) 拆出来:

\[f(x)=(|A|-|B|)x+\sum_{i\in B} a_i-\sum_{i\in A} a_i \]

要求的答案即 \(\min_{i=l}^r f(i)\)

可以发现 \(f(i)\) 是一个一次函数,最值在区间的端点处取到,因此答案为 \(\min(f(l),f(r))\)

考虑让斜率 \(|A|-|B|\) 的绝对值尽可能小,并且 \(\sum_{i\in B} a_i-\sum_{i\in A} a_i\) 尽可能大,这样显然是最优的。

于是可以将 \(a\) 数组排序,前一半取 \(x-a_i\),后一半取 \(a_i-x\)。此时 \(x\) 为中位数时有最小值。

(以上是感性理解,如果有漏洞或更严谨证明欢迎指教。)

#include<bits/stdc++.h>
#define N 200005
using namespace std;
int n,l,r,a[N];
int main(){int T;scanf("%d",&T);while(T--){long long ans=0;scanf("%d%d%d",&n,&l,&r);for(int i=1;i<=n;i++) scanf("%d",a+i);nth_element(a+1,a+(n+1>>1),a+n+1);int x=a[n+1>>1];x=max(x,l),x=min(x,r);for(int i=1;i<=n;i++) ans+=abs(a[i]-x);printf("%lld\n",ans);}return 0;
}
http://www.jsqmd.com/news/49673/

相关文章:

  • 2025年11月GEO优化服务商推荐报告:从稳定性到AI能力的解决方案剖析
  • 联通退订一些服务
  • 2025-11-24
  • NewStarCTF2024 Week4 Pwn MakeHero
  • 噬菌体筛选:纳米抗体阳性克隆富集的核心实验技术
  • 2025年11月GEO优化公司推荐热度榜:基于十大性能指标的结果承诺保障方案
  • 2025年11月GEO服务商推荐选择指南:专业分析维度助力企业的精准决策
  • SQL-leetcode—3475. DNA 模式识别 - 详解
  • 「张张讲AI」AI资讯公众号:联动深圳人才集团,讲师输出资讯+授课,助力AI落地
  • 使用frp实现内网穿透
  • 2025年11月GEO优化公司推荐权威榜单:十大品牌核心价值与解决方案解析
  • 2025年11月GEO公司推荐选择指南:专业分析维度助力企业精准决策
  • 2025年11月GEO服务商推荐评测报告:从稳定性到AI能力解决方案剖析
  • 2025年11月GEO优化服务商推荐评测报告:从技术实力到实战成果的解决方案剖析
  • macOS怎么关闭指定软件的开机自启
  • WPF的四种曲线绘制
  • 2025年11月北京陪诊公司推荐榜:专业机构服务对比与选择指南
  • 2025年11月北京陪诊公司推荐榜:专业服务对比与用户口碑分析
  • 2025.11.24 - A
  • Codeforces 1473E Minimum Path 题解 [ 蓝 ] [ 分层图最短路 ] [ 贪心 ] [ 构造 ]
  • AI医疗应用研究项目获奖公布
  • 11.24每日总结
  • 别让你的SQL跑了一整晚,最后只产出一堆数字垃圾
  • 二分图边着色学习笔记
  • 2025年11月四川软电线/硬芯线/家装电线/铝合金电缆/铝芯电缆/铜芯/高压/中压/低压电线电缆供应厂家综合推荐指南:五大优质厂商深度解析
  • Windwos11终端的作用
  • 2025龙门多片锯厂家有哪些?
  • 2025防爆空调品牌厂家推荐:守护危险环境的安全温控选择
  • 2025空调噪声治理厂家精选
  • 2025精选起重机厂家推荐