2 条题解
-
0
19210237 (笨笨童年) LV 8 @ 1 年前
-
01 年前@
F. Tenzing and Balls
Solution
Analysis
我们用数值来代表每个小球的颜色,题意即为每次操作可以取出序列中两个数值相同的之间的所有数(包括这两个数),并且将序列变成删除子序列后的新序列。
分析题目,显然:
对于 显然我们不可能删除同时范围 和 ,因为当我们删除序列 后序列将会变成 。
如果我们同时删除范围 和 ,最终得到的新序列应该与仅删除范围 结果相同,换句话说:当序列 时,结果即为删除序列 ,我们只需要进行一次操作即可。
那么,经过上述分析,我们可以假设:
在我们所寻求的最优解中,所有删除的子序列都是不相交的。
因此,问题等价为:我们需要找到一些不相交的子序列集合 ,
使得对于 并且 ,同时我们也需要最大化 的值。
Conclusion
考虑使用动态规划解决等价问题,令 代表在子序列前端 中==不删除的点==的最小数量,那么最终我们需要的最大值就是总数量减去前 个数中不删除的点的最小数量。
分析状态转移,用 来代表我们状态转移中寻求的索引, 即代表为每个数值 存储的满足 的最小值,分析能否寻找到这样的索引 ,我们可以得到:
- 如果我们无法寻找到一个索引 使得 ,即我们无法删除子序列 ,此时状态转移为 。
- 若果我们可以寻找到一个索引 使得 ,即我们能够删除子序列 ,此时状态转移为在 且 的情况下求解 。
综合所有情况,我们得出最终的状态转移方程:
\[
dp_i = min(dp_{i - 1} + 1, \ min\{dp_j | j+1<i, a[j+1]=a[i]\})
\]
我们预先为每个数值 存储满足 的最小 ,这样计算每个 的时间复杂度为 。Code
- 1
信息
- ID
- 1430
- 难度
- (无)
- 分类
- (无)
- 标签
- (无)
- 递交数
- 0
- 已通过
- 0
- 通过率
- ?
- 上传者