四毛子学习笔记

无聊

分块,每个块内做 \(ST\) 表,然后所有块做 \(ST\) 表,块长取 \(\log n\) 时最优。
时空 \(n\ log{log \ {n}}\)

数据随机,块长设为 \(\sqrt{n}\) 块内暴力处理前后缀 \(max\),然后对于整块直接 \(l,r\) 暴力做,就是 \(\sqrt{n}^{2}\),然后对于块内直接暴力做。外面显然 \(O(1)\),询问在块内的期望是 \(\frac{n}{\sqrt{n}}\) 所以综上时间线性

发现瓶颈在于块内的处理。如果序列相邻元素差为 \(1\),那么对于 \(\log n\) 的块,其情况最多 \(2^{log n}\) 次,所以我们预处理出来,然后开个桶,直接用二进制匹配即可。然后开 \(ST\) 表记一下总的,时间 \(O(n)\),然后零散块直接二进制匹配搞。

我们先建出笛卡尔树,然后就转换成了区间查深度最小的点,然后有个性质就是深度差为 \(1\),然后就变成了 \(+-1rmq\),然后就做完了。

posted @ 2025-07-09 10:23  wuhupai  阅读(9)  评论(0)    收藏  举报