莫队_51CTO博客
参考资料: 算法——从入门到黑题 详解 算法简介——OI wiki dead_X 的题单 关于: 一种利用 分块 特点将 区间操作 进行 离线处理 的 暴力。(暴论) 算法是由前国家队长涛提出的算法。最开始的是将区间询问按照 特定顺序 排序后,通过逐步移动左右端点求出 ...
就是离线处理一些问题。 当一个问题[l,r]可以由[l-1,r],[l,r+1],[l+1,r],[l,r-1]相差一的区间由O(1)或O(logn)推出时,就可以用实质上是离线处理,通过改变询问的顺序使复杂度降到O(n^1.5) 其实用到分块的地方仅仅是排序中用到? 排序的过程:先
转载 2016-12-14 22:06:00
130阅读
2评论
前言 是一种十分巧妙的数据结构,它和 分块 有着异曲同工之妙。算法由前国家队长涛发明,是一种 优雅的暴力 。
转载 2021-07-24 23:47:00
493阅读
2评论
oi-wiki 核心思路:离线算法,把每次的询问先记录下来,按一定的顺序排序,然后暴力从上一个区间转移到下一个区间。 复杂度: 当 \(n\) ,\(m\) 同阶时,块长取 \(\sqrt n\) 时,复杂度为 \(O(n \sqrt n)\) ; 当 \(m < n\) 时,块长取 \(\disp ...
转载 2021-08-20 11:53:00
94阅读
2评论
算法本质上。。似乎是大暴力。。。传说中能解决一切区间问题的算法
原创 2016-07-09 16:24:28
137阅读
回滚 用来处理一类区间扩张容易而收缩难的问题。 大概的思路如下: 还是按的方法排序(不要奇偶性优化),把所有询问按照左端点所在块分类处理。 对于左端点在同一个块$[L,R]$的,先把右端点也在$[L,R]$内的暴力处理。 而其它询问的右端点必定递增,因此我们可以实时处理出$[R,r]$的
转载 2020-01-18 19:49:00
103阅读
2评论
算法详解 本文翻译自MO’s Algorithm (Query square root decomposition),作者anudeep2011,发表日期为2014-12-28。由于最近碰到一些算法的题目,找到的相关中文资料都比较简略,而这篇英语文章则讲解的比较详细,故翻译成中文与大家分享。
转载 2016-03-15 16:24:00
265阅读
2评论
https://www.lydsy.com/JudgeOnline/problem.php?id=2038 题目描述 作为一个生活散漫的人,小Z每天早上都要耗费很久从一堆五颜六色的袜子中找出一双来穿。终于有一天,小Z再也无法忍受这恼人的找袜子过程,于是他决定听天由命……具体来说,小Z把这N只袜子从1
转载 2019-09-20 20:32:00
125阅读
2评论
https://vjudge.net/problem/SPOJ-DQUERY 此题连接; 题目大意:给出一个n个数的序列; 接下来有k个询问,每一次询问某一区间里的不同数的个数; 思想:分块 排序 暴力;先将所有询问存储起来,然后玄学排序降低复杂度; 1 #include<cstdio> 2 #
转载 2019-09-17 23:40:00
79阅读
2评论
普通 注意顺序正确!! codes for (int i = 1; i <= m; i++) { int pl = q[i].l, pr = q[i].r; while (l > pl) add(a[--l]); while (r < pr) add(a[++r]); while (l < ...
转载 2021-08-09 20:13:00
145阅读
2评论
普通算法://求线性区间内不同元素的个数const int N = 30010;struct node{ int l, r, id;}q[ck != b.l
原创 2017-09-28 12:55:21
98阅读
算法可以一个可高效解决绝大多数离线+无修改+区间查询问题的算法。这类问题具体是指:如果知道[L,R]的答案时,可以在O(g(n))的时间下得到[L,R−1],[L,R+1],[L−1,R],[L+1,R]的答案的话,就可以在的时间内求出所有查询。假设我们算完[L,R]的答案后现在要算[L′,R′]的答案。由于可以在O(1)的时间下得到[L,R−1],[L,R+1],[L−1,R],[L+1,R
原创 精选 2023-02-27 10:47:45
252阅读
算法可以一个可高效解决绝大多数离线+无修改+区间查询问题的算法。这类问题具体是指:如果知道[L,R]的答案时,可以在O(g(n))的时间下得到[L,R−1],[L,R+1],[L−1,R],[L+1,R]的答案的话,就可以O ( n n ⋅ g ( n ) ) O(n\sqrt n · \mathrm{g}(n))O(n n ⋅g(n))的时间内求出所有查询。假设我们算完[L,R]的答案后现在
原创 精选 2023-03-02 10:51:57
237阅读
block=n/sqrt(m*2/3); 求区间颜色个数: #include<bits/stdc++.h> using namespace std; //input by bxd #define rep(i,a,b) for(int i=(a);i<=(b);i++) #define repp(i,
转载 2019-05-24 12:22:00
83阅读
2评论
题:http://acm.csu.edu.cn:20080/csuoj/contest/problem?cid=2177&pid=B#include<bits/stdc++.h>#define db doubleusing namespace std;const int maxn=1e5+10;int a[maxn],b[maxn],vis[maxn],ans[m...
原创 2021-09-06 15:20:37
110阅读
在之前我已经发过了普通的博客了。 传送门 打了几...
转载 2018-09-07 21:02:00
114阅读
2评论
树上,顾名思义,就是到树上做。一般会有两种写法,一种是将正儿八经地搬到树上做;另一种是将搬到树的括号序上做。 树上 算法内容 这是在树上分块跑的版本。考虑到的实现过程,我们需要解决两个问题: 如何对树分块,才能保证复杂度? 如何移动标记来实现转移? 如何转移 首先我们来解 ...
转载 2021-08-13 14:30:00
592阅读
大多数内容来源于:LawrenceSivan 简介 是一种对询问的分块算法,通过左右端点的移动维护区间信息,主要用来处理离线区间查询等问题。 算法由涛队长提出,所以称这种算法为 普通 操作过程 将询问离线存储,然后将总区间分块,对$belong[l]$进行排序以减少左右端点移动 ...
转载 2021-09-16 11:50:00
132阅读
2评论
算法的原理讲解,就不多做解释,网上一大片学习资
原创 2023-02-08 09:00:29
91阅读
/*当我们知道s(n,m)的值之后便可以通过它得到四个递推公式:s(n,m-1)=s(n,m)-c(n,m);s(n,m+1)=s(n,m)+c(n,m+1);2*s(n-1.m)=s(n,m)
转载 2022-01-10 10:58:56
44阅读
  • 1
  • 2
  • 3
  • 4
  • 5