1 条题解
-
0
题解
思路
考虑区间 ,假设已经通过横向操作统一删除了 层。设区间最小值为 。可以直接对每个位置使用一次单点操作,代价 ;也可以再做 次整段横向操作,然后递归处理所有大于 的连续子段。
做法
递归函数返回上述两种方案的较小值。直接扫描区间找最小值并划分子段即可; 时最坏 足够。独立 Oracle 用线段树查询最小值下标,使分治为 。
短小层使用状态 BFS 穷举所有合法减一区间及单点清零操作。二进制层中每个连续的
1段一次横向操作即可清空,答案就是1段数量。正确性证明
最优方案若不用跨越整个当前区间的横向操作,只能分别清除各位置,代价不会优于逐点各一次。否则所有跨越整个区间的横向操作最多做到最小值 ,先执行恰好 次不会妨碍任何其他操作;达到这一层后值等于 的位置把问题唯一分成互不影响的正子段。两种情况覆盖全部最优方案,递归取最小故正确。
复杂度
标程时间复杂度 ,递归空间复杂度 。
- 1
信息
- ID
- 1243
- 时间
- 2000ms
- 内存
- 512MiB
- 难度
- 10
- 标签
- 递交数
- 1
- 已通过
- 1
- 上传者