CF1768F
dp+根号分治,配得上省选题的难度。
一眼 dp,虽然暴力肯定过不了,但是把朴素转移先列出来绝对没坏处。
这个东西很难用 DS 维护,有
假设要求从
这是因为值域上界为
化简一下,得到
看到分数就可以想到根号分治。
-
时,暴力枚举 转移。时间复杂度 。 -
时,枚举 。又因为有一个性质:最优情况下一定有 或 。因为 。这时又可以分两种情况。 -
时,记录每一个 的数上一次出现的位置,每次枚举转移。时间复杂度 。 -
时,如果 ,从 往前暴力枚举转移,直到遇到一个 为止。这一部分的复杂度呢?根据楼上大佬的说法,“对于 内的每个值,最多可能扫完整个序列一次”。所以均摊复杂度 。
总时间复杂度