CF1845E
首先我们容易发现如果给每个球一个编号,他的相对位置是不变的
于是我们不妨把原问题转化为一个常为
我们发现如果递推操作次数显然不记录序列的状态的话是比较难办的。于是我们考虑正难则反,考虑对于一个序列
容易发现如果想得到
,表示序列 与 的长度相等 ,表示最少操作次数 ,表示剩下的操作通过来回移动一个小球来消耗掉
于是我们按照序列顺序dp,设
容易得到递推式:
其中前半部分表示第
这样的复杂度是
方法1:
关于不降序列对应位置距离之和,有经典套路:在每个间隔处统计答案。 我们设
容易发现对于一个已知序列
而优化dp的过程通常需要以下两种条件:
- 考虑特殊条件
- 去除多余状态
如果细心可以发现题目有一个隐含条件,即
假设存在一个序列
根据等差数列求和公式,容易得到序列
但根据题目要求,最小操作次数应该
于是我们考虑把
设
容易得到递推式:
最终复杂度
方法2:
仔细一想上面的方法,可以发现我们优化后的dp式子相对与原先的dp式子记录的状态数完全没有改变,且我们并没有优化转移,所以说明原先的dp式子加一点小优化复杂度也是不变的
我们同样用一种更感性的方法证明上面的问题
我们考虑如果
于是我们可以求出dp转移时
同样得到最终复杂度
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· 三行代码完成国际化适配,妙~啊~
· .NET Core 中如何实现缓存的预热?
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?