2022.11.16 闲话
势能分析 Trick .
如果运算 \(f\) 满足 \(f^k(x)\)(上指标是复合)当 \(k\) 较小时是定值可以势能线段树 .
带修的话以区间加为例,如果 \(f(a)-f(b)\le a-b\) 复杂度就是对的,要不然需要修正一下 .
KTT?https://www.cnblogs.com/CDOI-24374/p/16789485.html
向下取整的除法运算
静态
直接看动态的得了😅
LOJ6029 市场
注意到一个区间进行至多 \(\log(m_2-m_1)\) 次除后即可变成区间减 .
定义对于线段树上的结点 \(u\),其势能 \(\Delta(u)=\log(m_2-m_1)\) .
则一次区间开根对势能的影响就是对于所有在区间内的结点 \(u\),将 \(\Delta(u)\gets\max\{0,\Delta(u)-1\}\),代价为所有结点势能减少总量 .
注意到一次区间加只会修改到经过的结点的势能,并将其恢复到 \(\Delta(u)=\log(m_2-m_1)\),因为每次经过的结点数量是 \(O(\log n)\) 级别的所以这里的复杂度也是正确的 .
于是时间复杂度即为 \(\Theta((n+q\log V)\log n)\),其中 \(V\) 是值域 .
向下取整的根号运算
静态 / 花神游历各国
每个数开 loglog 次就没了,于是暴力即可 .
UOJ228 基础数据结构练习题
注意到一个区间进行至多 \(\log\log(m_2-m_1)\) 次开根后即可变成区间减 .
定义对于线段树上的结点 \(u\),其势能 \(\Delta(u)=\log\log(m_2-m_1)\) .
则一次区间开根对势能的影响就是对于所有在区间内的结点 \(u\),将 \(\Delta(u)\gets\max\{0,\Delta(u)-1\}\),代价为所有结点势能减少总量 .
注意到一次区间加只会修改到经过的结点的势能,并将其恢复到 \(\Delta(u)=\log\log(m_2-m_1)\),因为每次经过的结点数量是 \(O(\log n)\) 级别的所以这里的复杂度也是正确的 .
于是时间复杂度即为 \(\Theta((n+q\log\log V)\log n)\),其中 \(V\) 是值域 .
JRKSJ R1 吊打
开方再平方结果不一定一样 .
平方再开方是一样的 .
然后你应该会了吧 .
Segment Tree Beats!
区间加
看后面那个题,第二个操作 \(a_i+i\) 改成 \(a_i+k\) .
具体方法大家应该都会,
CTT2021 Day 2 简单数据结构
我不会做啊,摆上这道题以显示我的闲话很完备……
以下是博客签名,正文无关
本文来自博客园,作者:Jijidawang,转载请注明原文链接:https://www.cnblogs.com/CDOI-24374/p/16897432.html
版权声明:本作品采用「署名-非商业性使用-相同方式共享 4.0 国际」许可协议(CC BY-NC-SA 4.0)进行许可。看完如果觉得有用请点个赞吧 QwQ