尧图网站建设 尧图网络
  • 首页
  • 关于我们
  • 服务项目
  • 案例展示
  • 建站流程
  • 资讯中心
  • 联系我们
首页/资讯中心/详情

3 ACwing 273 Making the Grade 题解

3 ACwing 273 Making the Grade 题解
📅 发布时间:2026/6/19 16:43:55

ACwing 273 Making the Grade

题面

给定长度为 \(N\) 的序列 \(A\) ,构造一个长度为 \(N\) 的序列 \(B\) ,满足

  • \(B\) 非严格单调
  • \(S = \sum_{i = 1}^N |A_i - B_i|\) 最小

求出最小值 \(S\)

\(1 \le N \le 2000\)

\(0 \le A_i \le 10^6\)

题解

先证明一个引理:\(B\) 中的所有数都在 \(A\) 中出现过

我们利用数学归纳法进行证明

首先对于 \(k + 1 = 1\) 的情况,显然成立

对于 \(k + 1 > 1\) 的情况

  • 若 \(A_{k + 1} \ge B_k\) 我们取 \(B_{k + 1} = A_{k + 1}\) 即可

  • 否则,要么 \(B_{k + 1} = B_k\) ,要么存在 \(x\) 使得 \(B_j...B_{k + 1} = x\)

    设 \(mid\) 为 \(A_j...A_{k + 1}\) 的中位数,根据货仓选址一题,如果 \(mid \ge B_{j - 1}\) \(x = mid\) ,否则 \(x = B_{j - 1}\)

对于以上情况,涵盖了最优解的同时也保证了 \(B\) 中的所有数都在 \(A\) 中出现过

所以我们就证明了引理

因为这道题的限制为序列递增,所以我们需要知道序列中数的大小关系

设 \(f(i,j)\) 表示考虑前 \(i\) 个数 \(B_i = j\) 的情况下的最小代价,初始 \(f(0,i) = 0\) ,目标状态为 \(\min \{f(n,i)\}\)

转移:\(f(i,j) = \min_{0 \le k \le j} \{f(i - 1, k) + |A_i - j|\}\)

这个候选集合也是只增不减的,可以用一个变量维护,将 \(A\) 离散化后,时间复杂度 \(O(N^2)\)

code

#include <iostream>
#include <algorithm>
#include <cstring>
#include <cstdio>using namespace std;const int N = 2e3 + 10;
const int INF = 2147483647;int n;
int a[N], f[N][N];
int num[N];int work () {int res = INF;memset (f, 0x3f, sizeof f);for (int i = 1; i <= n; i++) f[0][i] = 0;for (int i = 1; i <= n; i++) {int mn = INF;for (int j = 1; j <= n; j++) {mn = min (mn, f[i - 1][j]);f[i][j] = mn + abs (a[i] - num[j]);}}for (int i = 1; i <= n; i++) {res = min (res, f[n][i]);}return res;
}int main () {cin >> n;for (int i = 1; i <= n; i ++) {cin >> a[i];num[i] = a[i];}//num[i] 表示排名第 i 个的 a_isort (num + 1, num + 1 + n);int ans = work ();//反转后,相当于在求递减的 breverse (a + 1, a + 1 + n);ans = min (ans, work ());cout << ans << endl;return 0;
}

相关新闻

  • 实用指南:【MySQL】索引特性
  • 出题四
  • 资料中台(大材料平台)之数据仓库建设

最新新闻

  • 上海汽车音响改装选哪家?上海音乐人生,二十年赛事级连锁标杆门店 - 音乐人生汽车音响
  • 技术解析:从Tri-Plane到3D GAN,如何实现高效且一致的神经渲染
  • 通过Selenium实现网页截图来生成应用封面
  • 2026苏州钻石回收实测|国标4C定级,全城无套路靠谱门店变现指南 - 薛定谔的梨花猫
  • C语言宽字符处理:wmemcmp、wmemcpy、wprintf核心函数详解与实战
  • 多模态大语言模型LISA

日新闻

  • 5分钟掌握Python进化算法:Geatpy高性能优化工具完全指南
  • Microchip 24AA044 EEPROM选型与应用全指南:从参数解析到实战编程
  • 华为的鸿蒙到底有多牛?为什么称作遥遥领先?

周新闻

  • 3步解锁iOS设备:applera1n激活锁绕过完全指南
  • 39 2026 人工智能证书终极盘点,普通人选 AI 证书可以从这些方向入手
  • Redis 暴露公网有多危险?从端口检查到补救步骤

月新闻

  • 【总结】入门篇:50句话让你记住架构核心概念
  • WeChatMsg技术方案解析:实现Mac微信数据自主管理的完整解决方案
  • WeChatMsg:革新性微信数据备份方案,打造你的专属数字记忆库

关于尧图

  • 公司简介
  • 团队介绍
  • 企业文化
  • 荣誉资质

服务项目

  • 定制开发
  • 电商建站
  • UI 设计
  • 运维服务

快速链接

  • 案例展示
  • 建站流程
  • 常见问题
  • 资讯中心

联系方式

  • 📍北京市朝阳区互联网产业园 A 座 10 层
  • 📞400-888-8888
  • ✉️contact@rkmt.cn
  • 🕐周一至周日 9:00-21:00

© 2024 北京尧图网络科技有限公司 版权所有 | 京 ICP 备 XXXXXXXX 号