1 条题解
-
0
题解
思路推导
设美丽子序列的最后一个元素来自原序列下标 。如果此前一个元素来自下标 ,那么必须同时满足 与 。因此可以把问题写成按下标递增的动态规划。
直接对每个 枚举全部 可以得到二次算法。为了处理完整范围,改为从一个下标 出发枚举 。这样只访问真正满足位置整除条件的下标对,再根据值的大小决定是否转移。
做法
令 表示以 结尾的最长美丽子序列长度,初值均为 。按 的顺序处理,并枚举 的所有更大倍数 。若 ,就用 更新 。
由于所有转移都从较小下标指向较大下标,处理到 时 已经确定。最终答案是所有 的最大值。
正确性证明
任意以 结尾且长度大于 的美丽子序列,其倒数第二个元素位于某个下标 ,并满足 与 。算法处理 时会枚举到倍数 ,从而用对应最优状态更新 ,所以不会漏掉任何合法子序列。
反过来,算法执行的每次转移都满足位置整除和值严格递增。把 接到取得 的美丽子序列后仍然合法,因此算法产生的每个状态都能由真实美丽子序列达到。两方面结合,所有 均为准确最优值,最大者即为答案。
复杂度分析
倍数枚举次数为 。时间复杂度为 ,空间复杂度为 。
- 1
信息
- ID
- 1058
- 时间
- 3000ms
- 内存
- 256MiB
- 难度
- 10
- 标签
- 递交数
- 1
- 已通过
- 0
- 上传者