分块 莫队
分块 莫队
蒋卫升
这个作者很懒,什么都没留下…
展开
-
洛谷 P2709 小B的询问 (莫队模板题)
linklinklink 题意:见题面 题解:莫队模板 #include <bits/stdc++.h> #define ll long long using namespace std; const int maxn = 5e4 + 10; int c[maxn], a[maxn], n, m, k, block; ll ans[maxn], sum; struct node { int l, r, id; bool operator<(const node& t) co原创 2020-06-16 20:52:43 · 111 阅读 · 0 评论 -
LOJ 数列分块入门 2
link 需要思考的问题: 完整的块如何处理 不完整的块如何处理 需要预处理什么东西 题解 预处理 对于每一块,我们用一个vector保存这个块中所有的值,并且对这个vector排序。目的是为了方便我们后面的二分操作。 对于完整的块 更新:我们用lz[i]lz[i]lz[i]保存第i块整块要加的值。 查询:lowerlowerlower_ boundboundbound查询这个块中小于c减lz[i]的值的个数,因为本来这个块中所有的数都要加lz[i]。 对于不完整的块 更新:直接更原创 2020-08-17 16:45:34 · 190 阅读 · 0 评论 -
LOJ 数列分块入门 1
link 分块 优雅的暴力,对于一个数列,他不是一个元素一个元素处理,而是分成若干块,成块成块的处理,以此达到降低时间复杂度的目的。 需要处理的信息 首先,我们需要处理划分的块的大小—block(一般是根号n)、块的数目、每一个元素对应第几块,然后,每一块的左端点和右端点。 需要思考的问题: 完整的块如何处理 不完整的块如何处理 需要预处理什么东西 题解 完整的块:更新:我们用lz[i]lz[i]lz[i]保存第iii个块整块都要加上某个数的总和。 不完整的块:更新:直接更新。 查询:返回这个原创 2020-08-17 15:40:42 · 206 阅读 · 0 评论