Luogu5073 [Ynoi2015] 世上最幸福的女孩

题意:全局加,区间最大子段和。

允许离线,,时限 ,空限


考虑经典的维护最大子段和的线段树,需要记录下列四个值 : 最大前缀 ,最大后缀 ,最大子段和 ,区间和

然而,仅记录这几个值并不能支持快速打标记。

考虑改而记录成四个函数, ,分别表示该区间整体加上 后的最大前缀,最大后缀,最大子段和,区间和。

其中 显然等于

可以通过经典的转移得到 :

对于区间 ,在整体加上 之后的和会增加 ,故一个区间对函数的贡献是一条直线。

这里 都是若干候选区间取 的形式,可以用若干直线的 来描述,为下凸壳。

将直线 视作点 ,对偶后转化为维护上凸壳。

由于不同的 的数目是 的,故凸壳的大小也是 的,求个和就是

于是,大力求出所有的分段函数,时空复杂度均为

在查询时,根据全局标记,在对应区间的函数求值,并按照经典的最大子段和合并方法计算答案。

分段函数求值需要二分,这样复杂度就是 的,无法通过。


考虑离线,将全局加标记从小到大排序,这样求值就能线性扫描了。

除此之外,高达 的空间复杂度很可能导致 ,考虑优化。

将原序列分成大小为 个块,区间询问会被拆分成 个整块询问和 个零散询问,即 次函数求值,没有增加复杂度。

逐块处理即可将空间降至

时间复杂度 ,空间复杂度