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

寻逍遥2006
晓看天色暮看云,行也思君,坐也思君;春赏百花冬赏雪,醒也思卿,梦也思卿搬运于
2025-08-24 23:10:30,当前版本为作者最后更新于2025-02-27 22:00:25,作者可能在搬运后再次修改,您可在原文处查看最新版自动搬运只会搬运当前题目点赞数最高的题解,您可前往洛谷题解查看更多
以下是正文
测试点
直接搜索所有可能的解,由于 很小可以直接通过。
测试点
题目相当于对于每一个前缀,要将其分成若干个区间,要求区间和单调递减。同时字典序最小的限制要求后面的区间尽可能短,这个过程可以之间贪心。
直接 模拟这一个过程,总时间复杂度 。
测试点
考虑记 表示当前这一段是 ,处理 一共要分多少组,同时用 维护需要维护的求和。
因此有转移 ,,其中 为最大的满足 $\sum\limits_{g=k}^{i-1}v_g>\sum\limits_{g=i}^{j-1}v_g$ 的数。
记 ,对于 而言的转移点就是最大的 ,满足 ,也就是 。
最终就是要求所有 和 。但由于每一个点仅由一个点转移而来,所以考虑所有有用的状态数量。发现任何有用的状态都对应一个区间 ,其在某一个前缀的划分方案中出现。
对于 区间,这样的区间一共只有 个;对于 的区间,一个前缀中最多只有 个长度 的组,所以最多只有 个有用的区间。因此,有用的状态最多只有 个。
直接使用记忆化搜索,这样会访问到的状态数就是 的。现在的问题就变成如何找到转移的 ,对于每一个状态使用二分可以做到 。
总复杂度 。
常数较大的可能只能通过前一部分。
满分做法
优化找到每一个状态转移的 。
按照 从大到小扫描,找到所有我们需要转移的 。假设对于 的所有 已经按照从小到大排序了。
对序列进行分块,对于一个点 ,可以直接暴力 扫描出所有 和 在同一个块内的 对应的转移点,其中 为满足这样条件的 的数量。
对于 与 不在同一个块的转移,可以将当前块内的所有这样的状态 按照 进行排序,然后 扫描一遍所有的 ,即可同时扫描所有的 即可得到转移。由于 的值有上界 ,排序可以做到 。
对于一个点 ,如果所有的 是从大到小加入的,就可以保证在处理 时所有的 已经排序完成,因此在对于每一个点加入需要转移的状态时,需要按照 的大小从大到小加入。
最后直接按照 从小到大依次求解 和 即可。
总时间复杂度 。
- 1
信息
- ID
- 11555
- 时间
- 2000ms
- 内存
- 1024MiB
- 难度
- 6
- 标签
- 递交数
- 0
- 已通过
- 0
- 上传者