[CP / Codeforces] “使用最小操作次数构造不下降序列类”题目
C. Squaring - 1800*
E. Look Back - 1700*
这两道题本质上是相同的(前者来自最近的 Div.2,后者来自两个月前的 Div. 3)。
E. Look Back [solution]
贪心策略可以很容易地想到——计算出每个元素的最小操作次数,累加可得最终答案。难点在于,我们不能直接将 “操作” 应用于元素上,否则可能会出现溢出,轻则 WA,重则 RE。
于是我们就会想,是否能在仅维护操作次数、不改变输入数组的值的前提下计算出最终答案呢?
这是完全可以的!不过,需要一点小小的数学推导:
记原数组为
假设我们现在已经通过某种方式计算出了
根据题目要求,此时
所可以取的最小值,注意这里
分类讨论。
如果
如果
如果
可见,我们只需要找到
以
和
因此,我们可以使用上述算法计算出
C. Squaring [solution]
(这道题的推导和上面大相径庭,请读者自行尝试。)
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· winform 绘制太阳,地球,月球 运作规律
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· AI与.NET技术实操系列(五):向量存储与相似性搜索在 .NET 中的实现
· 超详细:普通电脑也行Windows部署deepseek R1训练数据并当服务器共享给他人
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理