#Snow{ position: fixed; top: 0; left: 0; width: 100%; height: 100%; z-index: 99999; background: rgba(255,255,240,0.1); pointer-events: none; }

随笔分类 -  数据结构

摘要:莫对是一种将区间询问离线处理的优雅的暴力。(主要思想:分块) 普通莫队 对于形如 [l,r]的询问,莫队首先将所有询问存储下来,通过排序优化区间的转移,那么对于序列上的区间询问问题。如从[l,r]的答案可以O(1)转移到[l-1,r],[l+1,][l,r-1][l,r+1],那我们可以在$O(n\ 阅读全文
posted @ 2022-11-14 21:48 繁花孤城 阅读(56) 评论(0) 推荐(0) 编辑
摘要:可持久化,顾名思义,可以持久维护数据,将所有历史版本全部保存下来,但每次修改操作只增加修改部分,不变的部分依旧不变。 每次增加数据时,只会在线段树上增加一条链,整体复杂度nlogn,空间nlogn,非常优秀。 形象化看下图。 我们增加点时将其与不变部分相连,然后递归新建新数据,下面新节点同理。 可持 阅读全文
posted @ 2022-11-01 15:26 繁花孤城 阅读(270) 评论(0) 推荐(0) 编辑
摘要:求面积并 #include<bits/stdc++.h> using namespace std; typedef long long LL; const int N=1e6+10; int n; int X[N*2]; struct segment { int l,r,h,val; }seg[N* 阅读全文
posted @ 2022-11-01 11:56 繁花孤城 阅读(22) 评论(0) 推荐(0) 编辑
摘要:引入问题 给出一个长度为n的数组,完成以下两种操作: 将第i个数加上k 输出区间[i,j][i,j]内每个数的和 朴素算法 单点修改:O(1)O(1) 区间查询:O(n)O(n) 使用树状数组 单点修改:O(logn)O(logn) 区间查询:O(logn)O(logn)** 前置知识 lowbit 阅读全文
posted @ 2022-10-08 22:17 繁花孤城 阅读(19) 评论(0) 推荐(0) 编辑
摘要:功能:区间操作,区间查询 给定一个长度为 N 的数列A,以及 M 条指令,每条指令可能是以下两种之一: C l r d,表示把 A[l],A[l+1],…,A[r]A[l],A[l+1],…,A[r] 都加上 dd。 Q l r,表示询问数列中第 l∼rl∼r 个数的和。 对于每个询问,输出一个整数 阅读全文
posted @ 2022-10-07 07:42 繁花孤城 阅读(23) 评论(0) 推荐(0) 编辑
摘要:功能:插入,删除,根据数值查排名,根据排名查数据,找前驱后继 您需要写一种数据结构(可参考题目标题),来维护一些数,其中需要提供以下操作: 插入数值 x。 删除数值 x(若有多个相同的数,应只删除一个)。 查询数值 x 的排名(若有多个相同的数,应输出最小的排名)。 查询排名为 x 的数值。 求数值 阅读全文
posted @ 2022-10-07 07:41 繁花孤城 阅读(29) 评论(0) 推荐(0) 编辑
摘要:功能:区间加 区间查询 区间翻转 伸展树(英语:Splay Tree)是一种能够自我平衡的二叉查找树,它能在均摊O(log n)的时间内完成基于伸展(Splay)操作的插入、查找、修改和删除操作。它是由丹尼尔·斯立特(Daniel Sleator)和罗伯特·塔扬在1985年发明的。 在伸展树上的一般 阅读全文
posted @ 2022-10-07 07:39 繁花孤城 阅读(144) 评论(0) 推荐(0) 编辑

点击右上角即可分享
微信分享提示