用户工具

站点工具


2020-2021:teams:legal_string:jxm2001:contest:2021_buaa_spring_training4

这是本文档旧的修订版!


2020-2021 ACM-ICPC, Asia Seoul Regional Contest

I. Stock Analysis

题意

给定一个长度为 $n$ 的序列,接下来 $m$ 个询问,每次询问区间 $[L,R]$ 中的所有连续子串中和不超过 $V$ 的最大值。

题解

离线询问,将询问的 $V$ 和 $O(n^2)$ 个子串和从小到大排序后依次处理,于是题目变为支持单点最值操作和矩形最值查询的模板题。

考虑树套树,时间复杂度 $O\left(n^2\log^2 n+m\log^2 n\right)$,但是二维线段树会变卡常,瓶颈是修改操作。

考虑用树状数组代替线段树,对于单点最值操作树状数组时间复杂度 $O(\log n)$,区间最值查询操作时间复杂度 $O(\log^2 n)$。

ps. 如果是单点修改操作,树状数组时间复杂度变为 $O(\log^2 n)$。

经检验,线段树套树状数组最快,时间复杂度 $O\left(n^2\log^2 n+m\log^3 n\right)$。

另外二维树状数组次之,时间复杂度 $O\left(n^2\log^2 n+m\log^4 n\right)$,修改常数更小了但查询变慢了。

查看代码

查看代码

 
2020-2021/teams/legal_string/jxm2001/contest/2021_buaa_spring_training4.1619427522.txt.gz · 最后更改: 2021/04/26 16:58 由 jxm2001