1 条题解
-
0
题解
思路
对每个值只需关心它的第一次出现位置。设 表示只考虑前 个元素时最多能涂色的个数,第 个元素保持为 。
若选择某个 作为上一个保留位置,当 时,可以保留第一次出现的 与位置 作为端点,涂色中间其余元素。因此
$$f_i=\max\left(f_{i-1},\max_{\operatorname{first}(a_i)\le j<i}\{f_j+i-j-1\}\right).$$做法
子任务 1 可枚举所有涂色状态并搜索合法操作,复杂度 。
子任务 2 直接按转移式枚举 ,复杂度 。
满分做法令 ,转移化为
$$g_i=-1+\max_{\min(\operatorname{first}(a_i),i-1)\le j<i}g_j。$$用线段树维护区间最大值,依次求出每个 ,答案是 。
复杂度
满分算法时间复杂度 ,空间复杂度 。
- 1
信息
- ID
- 1312
- 时间
- 2000ms
- 内存
- 256MiB
- 难度
- 10
- 标签
- 递交数
- 1
- 已通过
- 0
- 上传者