KTT 学习笔记
在做 4118 弱化版的时候发现了这样的小清新线段树,学习了一个下午后终于看懂了,发誓要写一篇小白也看得懂的学习笔记。
考虑这样的一个问题:
你需要维护 \(n\) 个一次函数 \(f(x) = kx + b\)。
询问给定一个单调增的 \(v\) 与区间 \(l, r\)。
问你区间内函数对于 \(x = v\) 时的取值最值。
观察一些性质:
- 一次函数之间的交点只有一个(暂时不考虑重合)
- 每个一次函数对于一个区间,能够取到最值的 \(x\) 一定是一个区间。
第二个有点拗口,但是看这样一张图,你会发现 每一个一次函数都只有一段在最上面。
而且段数显然是 \(n\) 级别的。
我们考虑用线段树维护当前区间的 最值线段 以及 下一次发生变动的 \(x\)。
前者是好维护的,后者直接对左右儿子取 \(\min\) 即可。
EI 已经证明了复杂度是 \(q\log ^ 3\) 的,你要问我我也不会证,挂个论文链接吧 XD。
posted on 2025-03-02 00:38 FurinaHateComma 阅读(79) 评论(0) 收藏 举报