1 条题解
-
0
yyy loves OI IV 题解
思路
令膜拜 yyy 的学生贡献 ,膜拜 c01 的学生贡献 ,并记前缀和为 。区间 中两类人数之差就是 。
设 为划分前 名学生所需的最少宿舍数。若最后一个宿舍对应 ,它合法的条件是 ,或者该区间全部为同一种数字。
小规模可以枚举 。当 时,记录每个前缀和值出现过的最小 ,枚举 到 即可。满分范围需要维护前缀和值区间上的最小 ,用线段树进行单点取最小和区间最小值查询。
做法
在线段树中先写入前缀 对应的 。依次处理每个位置:
- 在线段树上查询值域区间 的最小 ;
- 维护当前同色连续段开始位置之前到 的最小 ,这正好覆盖“最后一段全部同色”的所有起点;
- 两类转移的较小值加一得到 ,再用它更新前缀和值 的位置。
正确性证明
考虑任意最优划分的最后一个宿舍 。若它不是纯色段,则合法性等价于 ,第一类区间最小值转移一定枚举到 。若它是纯色段,则 位于当前同色连续段开始位置之前到 的范围,第二类转移一定枚举到 。因此算法不会漏掉任何合法的最后一段。
反过来,第一类转移选出的区间满足人数差限制,第二类转移选出的区间全部同色,所以每个转移产生的最后一个宿舍都合法。由 归纳可知, 恰为前 人的最少宿舍数,故输出 正确。
复杂度
线段树做法的时间复杂度为 ,空间复杂度为 。
- 1
信息
- ID
- 1047
- 时间
- 1000ms
- 内存
- 128MiB
- 难度
- 10
- 标签
- 递交数
- 1
- 已通过
- 1
- 上传者