专栏文章
题解:P5044 [IOI 2018] meetings 会议
P5044题解参与者 1已保存评论 0
文章操作
快速查看文章及其快照的属性,并进行相关操作。
- 当前评论
- 0 条
- 当前快照
- 1 份
- 快照标识符
- @mip29lvg
- 此快照首次捕获于
- 2025/12/03 04:59 3 个月前
- 此快照最后确认于
- 2025/12/03 04:59 3 个月前
模拟赛场上想出来的神秘做法。
对于单组询问,我们考虑在笛卡尔树上 DP,显然有转移:
考虑怎么刻画区间笛卡尔树:找到区间最大值,把从左端点开始的前缀 及其右儿子和从右端点开始的后缀 及其左儿子合并起来。接下来我们只考虑右侧的做法。
从左往右扫,维护一个递减的单调栈并维护当前每个点的 DP 值 。考虑加入一个点 产生的影响:
- 显然是 。 就是整个序列的笛卡尔树上的左儿子。
- 前面的某个点 有 (从右往左依次转移), 是单调栈上右边的元素。
看起来第二个不是很好维护,但是我们只需要求 个 ,考虑不直接维护每个 DP 值。假如我们要询问的是 ,可以发现肯定是从询问时存在的某个 转移过来的,被加上的一定是 个 (显然吃最右边的最优)和他们之间的节点的 的和,可以在单调栈上做一个前缀和,就是插入和询问的时候各加一个常数。
这样问题就变成了每个点有 和 ,要支持单点修改,全局 ,求区间 。显然可以 KTT 维护,时间复杂度 ,常数很小。
code。
相关推荐
评论
共 0 条评论,欢迎与作者交流。
正在加载评论...