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

[NOIP2021] 方差 题解

link

剧透

方差计算式:\(n \sum a_i - (\sum a_i)^2\)

剧透

方差是 \(\min_d \{\sum_i (a_i-d)^2\}\),可以随意选择 \(d\)

剧透

不妨多尝试几种转移顺序。

剧透

尝试加强你的性质,比如,证明差分序列严格单谷是最优的。

题意:给定数列 \(a\),每次可以令 \(a_i \larr a_{i-1}+a_{i+1}-a_i\),要求经过若干次操作后 \(a\) 数列方差的最小值。

观察性质

首先,这个操作是交换相邻两项的差分。

然后感性理解一下,为了让数靠近平均值,差分序列一定大致是单谷的。

严谨证明:

记序列 \(a\) 的平均值为 \(d\),记 \(a_p \leq d \leq a_{p+1}\)

对于所有 \(a_i(i > p)\),如果差分不是单调的,我们可以邻项交换,使得 \(\sum_{i} (a'_i - d)^2 \leq \sum_{i} (a_i - d)^2\),而前者大于等于新的方差。

对于 \(a_i(i \leq p)\) 同理。

对于恰好跨过 \(d\) 的那个差分(即 \(a_{p+1} - a_p\)),可以证明,这个差分可以与其中一边交换,使得新的方差变小。

因此差分序列是严格的单谷。

我们可以设计 \(dp\),目前有两个方向:从中间往两边插入,或者从两边往中间插入。

从中间往两边

考虑最终的答案为 \(n \sum a_i^2 - (\sum a_i)^2\),我们需要记录 \(\sum a_i\)\(\sum a_i^2\)

对差分序列 \(b\) 从小往大开始插入,每次插到头尾。

发现无论把 \(b_k\) 插入到开头和结尾,都可以根据已知的 \(x = \sum a_i\)\(y = \sum a_i^2\) 推理出新的值。

因此我们可以直接设计 \(f_{i,s}\) 表示考虑到第 \(i\) 个差分,且 \(\sum a_i = s\) 时,\(\sum a_i^2\) 的最小值。

转移复杂度 \(O(1)\),状态数是 \(O(n^2a)\),总复杂度 \(O(n^2a)\)

从两边往中间

这里使用 \(n \sum a_i^2 - (\sum a_i)^2\) 就不太好使了,因为还需要多记录下前面数的和,多了一个 \(a\)。(当然也可以优化成上面的做法)

考虑方差的式子:\(\min_d \{\sum_i (a_i-d)^2\}\)

枚举这个 \(d\) 的位置,每次跑一遍 dp,可以做到 \(O(n^2a^2)\)

考虑到既枚举 \(d\)、又记录下来前缀和很浪费,尝试把 \(d\) 记录进状态里。

由于我们只关心 \(a_i-d\),也就是当前数和 \(d\) 的相对位置,可以直接记录当前剩余没有放数的区间,和 \(d\) 的相对位置。

同样可以做到 \(O(n^2a)\)

小优化

\(O(n^2a)\) 不能通过本题,但是已经很接近了。考虑怎么乱搞一下。

发现差分数组非 \(0\) 的值只有 \(\min(n,a)\) 项,而 \(0\) 对转移没什么影响。

所以只需要对所有非 \(0\) 项做转移即可。

复杂度 \(O(\min(n,a)na)\)

http://www.jsqmd.com/news/924329/

相关文章:

  • Arduino红外遥控库终极指南:从零到精通的红外通信解决方案
  • Gemini非洲语言训练数据首次披露:18TB本土语料库、47个社区标注团队、零英语中转架构(内部白皮书节选)
  • 5大本地AI音频处理功能:如何用OpenVINO插件彻底改变你的Audacity工作流 [特殊字符]
  • 2026年本地生活门店获客指南 豆包置顶优化服务商汇总 - 资讯纵览
  • 香港人深圳做全屋定制流程 - 产品测评官
  • DIY磁力旋转开关:用Arduino单线读取五档状态
  • 标题:深圳全屋定制工厂直销价格表 - 产品测评官
  • 基于ESP32与VNC协议打造低成本瘦客户端:从原理到实践
  • 【紧急预警】Gemini退款窗口期正悄然缩短!2024Q2最新政策变动及3类用户自救方案
  • 限时解密:Google内部未公开的Poetry Fine-tuning Prompt Template(仅剩最后87份可复用结构)
  • 成都波艳成笑办公家具:靠谱的成都电线电缆回收公司 - LYL仔仔
  • 深圳罗湖全屋定制安装团队不外包 - 产品测评官
  • 3个突破性方法解锁yuzu模拟器全版本下载与性能优化实战
  • 从零打造高性价比人形机器人:基于ESP32与3D打印的16自由度桌面伙伴
  • Arduino驱动BMP280气压传感器:从硬件连接到数据采集全攻略
  • 免费解锁百度网盘满速下载:BaiduPCS-Web + KinhDown 终极解决方案
  • R语言从入门到精进
  • 2026 石家庄奢侈品回收本地甄选 六大门店横向测评交易全程透明 - 薛定谔的梨花猫
  • 【Gemini危机公关黄金72小时】:20年技术传播专家亲授AI产品舆情失控的5步逆转法
  • AI Agent核心架构解析:从被动响应到自主行动的智能体构建指南
  • Arduino光追踪机器人:从LDR传感器到闭环控制的嵌入式入门实践
  • 书匠策AI:被99%学生忽略的“论文外挂“,课程论文居然能这样速通?
  • 如何用Zotero Style插件打造你的专属文献管理系统
  • 未来三年,1039经营地和服务商的双重升级趋势 - 欢欢在创业
  • 【EF Core】继承策略——TPT
  • 【企业级舆情防御红线】:Gemini系统未启用这6项策略的团队,87%在危机爆发后72小时内失守
  • 全平台资源一键获取:告别网络限制的高效下载神器
  • Video2X Qt6界面开发:高性能视频处理框架的信号槽机制与多线程架构深度解析
  • 软件工程造价师认证实战应用与职业价值指南
  • Gemini社区增长飞轮模型(2024最新版):基于127个开源AI社区数据验证的4层闭环机制