1 条题解
-
0
自动搬运
来自洛谷,原作者为

Larunatrecy
举杯邀明月,对影成三人。搬运于
2025-08-24 22:55:29,当前版本为作者最后更新于2024-10-31 11:36:19,作者可能在搬运后再次修改,您可在原文处查看最新版自动搬运只会搬运当前题目点赞数最高的题解,您可前往洛谷题解查看更多
以下是正文
设 表示把前 个位置划分成 段的最小代价,转移:
其中 为区间 内的颜色数,可以预处理出来。
询问是 的,总复杂度 。
有至少两个做法。
sol 1
优化第一部分的 DP,以 为阶段,那么我们只需要维护 的最大值。
开一棵线段树,第 个位置维护 ,当我们 时:
其中 为 左边第一个等于 的数的下标,没有则为 。
上面的转移只需要线段树支持区间加即可。
询问还是 的,总复杂度 。
sol 2
我们不难证明 满足四边形不等式,因此 DP 可以用决策单调性优化。
直接分治,两个指针移动来维护 ,总复杂度 。
因为 ,所以我们只需要解决一个询问。
由于蒙日矩阵 卷积的 次幂的每个位置都关于 凸,因此 关于 是一个凸函数,这种区间划分问题的经典做法是 二分。
二分斜率 ,转移为:
然后同上用线段树优化转移,复杂度 。
我们考虑一下 二分的斜率 。
那么因为 ,所以 ,那么当 时,,此时切点一定是分一段,因此只有 的 有意义。
对于 各做一遍线段树优化 DP,存下每个前缀的答案即可。
复杂度 。
上一个做法告诉我们,当 过大时,切点就会很小。
我们可以具体分析一下,设 ,因为 是凸函数,所以 恒成立。
同时,因为 ,那么有 $(k-1)D(k)\leq \sum_{i=2}^k D(i)\leq F(k)-F(1)\leq n$,即 。
设斜率为 时的切点为 ,那么 $F(G(c)-1)-c\times (G(c)-1)\leq F(G(c))-c \times G(c)$ ,即 ,。
我们取阈值 ,
-
对于 的询问,我们可以预处理所有普通 DP 值。
-
对于 的询问,根据上面的性质, 的 满足 ,我们预处理这些 对应的 DP 值。
都采用线段树优化,单次 DP 都是 ,取 ,我们预处理的复杂度是 。
询问时,前部分可以 回答,后半部分可以直接二分,不过这样空间是 的。
同时注意到 是单调的,因此可以把询问按照 排序后,用一个指针维护转移点,空间就是线性了。
排序可以用桶排序,该做法时间复杂度 ,空间复杂度 。
注意到线段树的常数比较大,如果被卡常可以把第一部分的 换成决策单调性分治,因为访问时连续的所以常数小很多。如果实现较好,也可以直接获得满分。
考虑能不能把线段树的 去掉。
观察一下我们实际需要支持的操作:
- 向末尾加入一个数
- 后缀加
- 求最大值
维护一个单调递减的单调栈,那么 操作可以直接不断弹栈维护, 操作就是查询栈底元素。
对于 操作,我们找到该后缀在单调栈上对应的位置,这个可以用并查集维护,然后相当于把这个部分往前面合并弹出若干元素,最后打上 标记。
因为要支持中间弹出元素,所以我们用链表维护这个单调栈,至于 标记,我们可以发现我们相当于只需要查询栈底,查询栈顶,查询某相邻两个位置的差值,因此直接维护单调栈内元素的差分值即可,打标记是简单的。
瓶颈在于并查集,因此单次 的复杂度优化到了 ,如果采用严格线性并查集,我们可以做到 。
剩下部分不变,复杂度 ,空间 ,可以通过此题。
值得一提的是,在本题中你可以发现,我们优化单次 DP 和优化多次询问的部分是独立的,也就是说,我们把 换成任意凸函数,在值域不大的情况下都可以在根号的代价内求出所有函数值。
代码不放了,需要的可以私聊。
- 1
信息
- ID
- 9760
- 时间
- 1200ms
- 内存
- 128MiB
- 难度
- 7
- 标签
- 递交数
- 0
- 已通过
- 0
- 上传者