首页 > TAG信息列表 > 散块

分 块 套 娃

众所周知, 如果我们用正常的分块做单点加区间求和, 时间复杂度高达 \(O(1)-O(n^{1/2})\) (修改-询问). 然后你发现这太慢了. 于是你考虑改一下分块的大小. 我们更改块的大小为 \(n^{2/3}\), 整块的复杂度成功变成了 \(O(n^{1/3})\)! 但是散块的复杂度变成了 \(O(n^{2/3})\), 成功

LOJ #3341. 「NOI2020」时代的眼泪

看题解不要在多个题解之间反复横跳! 题目叙述 平面上若干个点 \((i,p_i)\) ,其中 \(p_i\) 为一个 \(1\sim n\) 的排列,\(m\) 次询问,每次询问一个矩形内部点对满足一个在左下一个在右上的数量。 题解 直接分块。 散块对整块/散块的贡献 预处理 \(s_{i,j}\) 表示 \(1\sim i\) 这些块内,

20220321 刷题日记

P2582 水题,不值一提。 P4823 感觉这种在贪心题结论还是很难得到,直觉看来,需要按照 \(a+b\) 排序,但是考虑到可能前面有的人要当人梯,所以要dp。实际上个人觉得这个证明是非常不严谨的,更严谨的证明可能需要拟阵等数学模型来做。 P5048 线性空间区间众数,对于分块的题目有启发式意义,这个

数列分块入门 1-9

来自 hzwer 的九道非常经典的分块题。 目前可以在 LOJ 上提交:Here 1. 给出一个长度为 \(n\) 的数列,支持区间加,单点查值。 将序列分成长度为 \(S\) 的 \(\lceil\frac{n}{S}\rceil\) 块。 设我们的操作区间为 \([l,r]\),称被其完全包含的块为整块,否则为散块。 可以发现整块的数量不

LUOGU P4119 Ynoi2018 未来日记

更好的阅读体验 题意 有一个长度为 \(n\) 的序列,共 \(m\) 次操作: 1 l r x y,把区间 \([l, r]\) 内所有 \(x\) 变成 \(y\); 2 l r k,查询区间 \([l, r]\) 内第 \(k\) 小值. \(1\le n, m\le 10^5\),任何时刻 \(1\le a_i\le 10^5\) 题解 对于这种复杂的修改操作,我们直接考虑分块 对序列

lxl ppt 学习笔记

学习 lxl 的 nb ppt。 不知道能不能看得下去。 动态分块 经典问题1 区间加,区间小于等于 x 个数。 直接分块,维护每个块的 tag,以及这个块排序之后的数组。 散块直接查,整块在块上二分。 Ynoi2017 由乃打扑克 区间加,区间第 \(k\) 小。 其实就是上面这玩意套个二分。 注意可以把散块提

洛谷 P5391 - [Cnoi2019]青染之心

洛谷题面传送门 介绍一种假做法,期望复杂度应该比较优秀,但可以卡掉( 首先这个问题显然严格强于只有添加元素的情况对吧,而只有添加元素的情况就是一个普通的背包,而只有插入操作的版本复杂度就已经达到了 \(\mathcal O(qV)\),因此此题 std 的复杂度肯定不低于 \(\mathcal O(qV)\),而此题

【草稿】Ynoi 2006 rmpq

Data 是没有交换律的,意味着所有的操作都要按时间来。 如果平面上横着竖着加起来有 \(n\) 条直线,那么最多将平面划分的区域数是 \(n^2\) 级别的。不妨考虑操作分块,每 \(B\) 个修改分一个块,在一个块内维护每个区域的标记。接下来讨论一些细节: 建立标记结构:一行块一行块的考虑,时间复

关于不带修区间逆序对的一些做法

离线做法:莫队+树状数组 每次加减考虑贡献即可,时间复杂度: \(\Theta(n\sqrt{n}\log n)\) 在线做法 有三种 第一种 拿个树状数组和主席树乱搞搞,跑的慢而且难写(好像这些东西没有好写的),而且时间复杂度并不优秀,是同样的 \(\Theta(n\sqrt{n}\log n)\) 第二种 虽然时间复杂度依然是 \(\The

P5048-[Ynoi2019 模拟赛]Yuno loves sqrt technology III【分块】

正题 题目链接:https://www.luogu.com.cn/problem/P5048 题目大意 就是这个 【QA】区间众数,但空间很小 长度为\(n\)的序列,要求支持查找区间众数出现次数。 强制在线 \(1\leq n,m\leq 5\times 10^5\) 解题思路 空间小就不能用蒲公英那种做法了 分块然后处理出每个连续块段的众数