数字序列
首先来看一下蓝书上面的两个思考题
一.
将一个序列
答:用
那如果在最少修改数的基础上,我要让每个数改变的绝对值之和的最小值最小怎么办?
答:首先,这根“Making the Grade”这道题目很像,所以我们考虑用DP
我们假设已经选好了一个
由“分级”这一道题目给我们带来的启发,我们可以想到一个引理:设
这个证明与AcWing上y总的证明以及我的写在博客里面的证明非常像:我们假设已经随便移动这些数让他们介于了
这里借用洛谷的一个图片,实际上这些平台根本不用递增
然后我们依次从左往右考虑每一个平台,让他往上或者往下移动,如果中途碰到了另一个平台就带着这个平台一起移动(但是方向一定要最优),由于平台个数是有限的,最终一定会移动完成的,也就是引理
注意,上述移动过程的正确性还要基于我们选出的是最长不下降子序列,也就意味着
但是还有一个问题:
实际上,这种情况有大概两种解决方法:第一种是尝试证明无论怎么选答案都一样,就随便选一个就可以了;第二种就是利用DP或者贪心等等选择最优方案
这里不用第一种,因为这是伪命题,所以用第二种
我们设
然后我们枚举每一个
时间复杂度
但是数据是随机生成的,说这句话的意思就是说时间复杂度大点点没事(这也就是为什么我们要用
另外提一句,这道题目还可以用可并堆“左偏树”解决
二.
将一个序列
答:设
那如果在最少修改数的基础上,我要让每个数改变的绝对值之和的最小值最小怎么办?
答:修改
这也就是这道题目的做法
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 【译】Visual Studio 中新的强大生产力特性
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 【设计模式】告别冗长if-else语句:使用策略模式优化代码结构