【笔记】数据结构选讲 2025.2.10
【笔记】数据结构选讲-李雷思问 2025.2.10
Becoder 50751 多重集
G. 多重集 - 数据结构选讲1-李雷思问(day22) - 比赛 - Becoder
通过指定
在值域线段树上维护这个偏序关系,每次 pushup 的时候统计跨过中点的偏序关系所带来的答案。可以做到
P7907 [Ynoi2005] rmscne
定义两个区间
子区间的可能性过多,并不好直接求,我们考虑把选子区间改成:对询问区间
扫描线从左往右扫 lower_bound
找。总的时间复杂度
由于这个复杂度不是本题正解,需要优化常数才能通过。具体是优化找
P6773 [NOI2020] 命运
一个
一种方法是做前缀和之后点乘再差分回来,也可以拆开
最后记得把
优化使用线段树合并。合并的时候有一个函数 merge(p, q, l, r)
表示合并
总复杂度
[Hangzhou23K] Card Game
如果区间
不要写可持久化平衡树。直接做线段树合并与分裂就是对的了,因为这里的合并不是“有交并”而是“无交并”,复杂度是固定的
UOJ164【清华集训2015】V
一种方法是和 P8868 [NOIP2022] 比赛 一样的矩阵乘法维护信息。另一种方法先忽略了历史最值,将所有操作统一刻画为了
LOJ6029 「雅礼集训 2017 Day1」市场
势能线段树。直接说了,这题的势能函数构造是
但是很显然这不是很对,例子是
这个条件看似十分搞笑,实际上也是没什么用(但其实有用),我们通过刚才的推导过程我们得知实际上以下式子是成立的:
意思是如果
的时候,向下递归无法减少势能,这需要区间赋值或区间加标记。 的时候,势能有一定可能变成 ,如果这个东西 我们就完蛋了,例如说 (而且 )的时候势能就会不变,例如 而且 的时候势能也不会变,但你发现没有这种情况。再往上的情况那个 就微乎其微了,因为 总会下降,势能总是能减少的。
那就只有两种情况:
的时候一定要特判,打标记。 即 的时候,因为 不变,所以我们打一个区间加的标记,同样的 的时候也打区间加标记就行了。
每次区间加操作会带来
***这里暂时跳过 segment tree beats 部分
Becoder 29550 牛半仙的妹子序列
总之,这是一个线段树优化 dp 的过程,抛开前面的平凡过程不谈(真的平凡吗?)。总之,我们需要的就是“在线段树区间上,维护出区间内的后缀最值位置上的
使用小粉兔线段树,在一个节点上维护区间最大值,后缀最大值的 dp 值之和,以及左子树中
Becoder 46907 黑白树
先删掉这个改颜色的操作。由于有链加和子树加,我们猜测 dfn 序是跑不了了,而且一个连通块还可以表示为一个大子树扣掉一堆小子树,于是我们大概可以做了,然后发现复杂度有问题在里面。
有人提出了一种算法,以维护白色连通块信息为例,首先将所有黑色点(原文是黑色连通块顶点但我觉得也可以是黑色点)对应的那些子树在线段树上的 dfn 区间对应全都找出来,标记这些线段树节点为灰色,然后我们对白色连通块操作的时候,首先找到顶点(
什么你说操作 1 怎么办?让这个灰色区间能动态变化就行,并不难,然后这样修改之后由于标记都已经下传完了所以不再会有问题了。
树上数据结构部分
本文来自博客园,作者:caijianhong,转载请注明原文链接:https://www.cnblogs.com/caijianhong/p/18709963
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 地球OL攻略 —— 某应届生求职总结
· 提示词工程——AI应用必不可少的技术
· Open-Sora 2.0 重磅开源!
· 周边上新:园子的第一款马克杯温暖上架
2023-02-11 题解 LGP9018【[USACO23JAN] Moo Route G】