1 条题解
-
0
题解
思路
设 为前 个元素的合法划分数,。若子段 中恰好出现一次的值不超过 ,则 可以转移到 。
做法
子任务 1:枚举切分
枚举 个间隙是否切开,逐段统计频率并验证。复杂度 。
子任务 2:二次动态规划
固定右端点 ,从 向左移动左端点,维护每个值的出现次数和恰好出现一次的值数,即可在 内求出 。总复杂度 。
子任务 3:分块优化
扫描右端点 。对每个候选切点 ,维护 ,表示 中恰好出现一次的值数,同时在位置 存放权值 。需要查询所有 的权值和。
设 上一次、上上次出现位置为 。加入 后:
- 时,出现次数由一变二, 减一;
- 时,出现次数由零变一, 加一。
于是每步只有两次区间加减一、一次全局查询和一次插入。
对切点分块。每块维护懒标记、按块内原始 值分桶的 权值和,以及当前 的权值和。整块加减一只移动一次阈值;散块修改先下放标记,再用 重建。取块长 ,单步复杂度为 。
复杂度
满分算法时间复杂度 ,空间复杂度 ;实际分桶总容量为块数乘 。
- 1
信息
- ID
- 1211
- 时间
- 5000ms
- 内存
- 512MiB
- 难度
- 10
- 标签
- 递交数
- 1
- 已通过
- 0
- 上传者