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 简单数据结构

我不会做啊,摆上这道题以显示我的闲话很完备……

posted @ 2022-11-16 20:41  Jijidawang  阅读(68)  评论(0编辑  收藏  举报
😅​