题解:P9877 [EC Final 2021] Vacation
For_Catqwq · · 题解
P9877 [EC Final 2021] Vacation 题解
1.题意简述
区间长度不超过
2.前置芝士
线段树,分块。
3.题目分析
如果去掉长度小于等于
我们首先对序列进行分块,每
接下来,我们来考虑相邻两个块的情况。
假设我们选了两个点
这样不太好看,我们把右边的块拿下来。
很显然如果每个块内部重新按顺序编号,那么
那么此时我们就可以用线段树轻松维护掉这个东西,此时线段树中每个元素的值即为前缀和,设前一个块的第i个元素的前缀和为
我们维护的答案即为
这个东西也很好维护:线段树维护信息即为区间答案和最大的
每次查询区间答案即拆分为两个部分:1.块内的最值以及相邻两块最值的最值。2.左右两端的散块和相邻块的答案。
第一个部分可以用线段树快速查询,第二个部分我们先来看位于左端点的散块,
此时答案即为绿色部分最大值-黄色部分最小值与线段树查询黄色与蓝色答案取最大值。
右端点处散块同理,不再赘述。
然后,然后就做完了qwq。
总复杂度即为