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

Bronya18C
人活着就是为了和美少女贴贴搬运于
2025-08-24 23:15:54,当前版本为作者最后更新于2025-05-28 12:52:40,作者可能在搬运后再次修改,您可在原文处查看最新版自动搬运只会搬运当前题目点赞数最高的题解,您可前往洛谷题解查看更多
以下是正文
题目大意
给定一个长度为 的数组 ,其中 ,令 表示 中所有满足 的 的最大值,如果不存在这样的 ,则 为 。
求 。
数据范围
对于所有测试点, 。
,依赖 。
。
,依赖 。
保证 在 中随机生成,。
,依赖 。
,依赖 。
解题过程
做法
离散化后,按题意暴力依次枚举 ,在枚举 的时候维护 的值。
时间复杂度 。
可以通过 ,期望得分 。
做法
考虑沿用做法 ,考虑在枚举 的过程中,同时计算所有 的答案。
假设当前 中的数构成集合 ,每个数 能贡献到的 是 ,其中 表示 中最小的比 大的数。
如果在确定 的情况下,从小往大枚举 ,此时需要用数据结构去维护集合的加入,复杂度 。
考虑倒着枚举 ,那么我们只用实现删除,可以用双向链表维护,复杂度 。
可以通过 ,期望得分 。
做法
考虑 ,此时 只有两种取值,
可以分类讨论,
假如当前段 只有 或 ,那么对答案的贡献为 。
否则对答案的贡献为 。
考虑对这样的段计数,可以通过每个极长 和 的段算出对应的数量,然后可以算出答案。
复杂度 。
可以通过 ,期望得分 。
加上算法 ,期望得分 。
做法
算法 启发我们从值域上下手。
此时分类讨论的状态太多,我们不好维护。
考虑这样一个问题,我们在计算 的时候,把 的数看作 ,那么问题变成了简单的区间 。
令初始序列全为 ,然后从小往大加入这些数,假设此时已经加入了所有 的数,然后我们统一计算所有区间的 的答案,这个问题可以维护一个单调栈或者笛卡尔树解决。
复杂度 。
可以通过 ,期望得分 。
做法
考虑沿用做法 ,用类似 Treap 的方法去维护这样一个笛卡尔树,相当于单点修改 Treap 的 fix 值,可以使用旋转 Treap,或者 FHQ Treap 的 merge 和 split 维护。
因为数据随机,所以此时树高期望是 的。
复杂度 。
可以通过 ,期望得分 。
做法
做法 的转化很类似于今年 UNR D2T3 大海的深度。
相当于有 次单点修改,每次修改后计算一下全局每个区间 的和,然后乘上它能贡献的时间长度贡献到答案。
这里引用原题解的做法:
考虑分治,处理所有跨过分治点的贡献。
分治。处理所有跨过分治点的贡献。只需 代价即可转化到原问题。
离线,扫描值域。令当前扫描到 。对于每个 ,维护 表示第 时刻分治中心左边距离中心最近的 的数的距离, 表示右边的距离。
变小时对 的修改均为区间取 ,用 维护即可。
还需要维护每个时刻的答案 。第 时刻 的区间数量即为 ,反过来可得 的区间数量为 。因此 增大时,需要令 $ans_i\leftarrow ans_i+(mid-l+1)\times (r-mid)-p_i\times q_i$。
每个 处维护四维向量 ,用矩阵表示修改即可。时间复杂度为 。
加上外层分治,总时间复杂度为 。
可以通过 ,期望得分 。
做法
依旧考虑分治,计算跨过分治点 的所有贡献。
还是从小到大枚举加入所有数,然后会发现有用的位置只有每个时刻 的后缀最大值和 的前缀最大值。
对于每个时刻,
每个 的后缀最大值位置 的贡献为 ,其中 为最大的不超过 的数 ,满足 都有 , 为下一个比 小的后缀最大值位置。
每个 的前缀最大值位置 的贡献为 ,其中 为最小的不小于 的数,满足 都有 , 为下一个比 大的前缀最大值位置。
考虑快速维护这个贡献,
在从小到大加入每个数的过程中,当前加入的数一定是目前最大的。
不妨假设它的位置在 ,
-
首先,它会弹掉那些在 中在它左边的后缀最大值,使它们的贡献消失,
-
其次,它会使在 的前缀最大值的对应的 变成 。
-
最后,加入 对应的贡献。
假设我们已经维护好了当前所有位置的贡献,第一、三部分可以用单调栈去维护暴力删除。
我们定义一个 的后缀最大值 的支配集合为所有 的前缀最大值 ,满足 。
容易发现一个 最多只会属于一个 的支配集合。
知道支配集合后,我们只用维护每个点的支配集合,并计算 就可以快速维护第二部分的贡献。
如何求出当前位置 的支配集合,我们发现正好是第一部分被弹掉的位置的支配集合的并,并且支持 合并。
假如我们要同时维护两边的支配集合,在第一部分删除的时候会使得另一边的支配集合改变,可以用并查集维护这个点属于哪个支配集合。
于是我们可以在 算出对应分治区间的答案,算上外层分治,总复杂度 。
可以通过所有 ,期望得分 。
参考资料
-
- 1
信息
- ID
- 12270
- 时间
- 2000ms
- 内存
- 512MiB
- 难度
- 7
- 标签
- 递交数
- 0
- 已通过
- 0
- 上传者