![](https://img-blog.csdnimg.cn/20201014180756927.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
分块
liaoxiyan123
这个人不懒,但什么都没写。
展开
-
莫队经典例题
传送门:[AHOI2013]作业 本题做法:莫队+分块(辅助). 1用莫队统计区间内每个数的个数以及所在块中数的个数和种类数. 2.分块按照值域分,整块直接加上处理后的区间的相关数据,碎块暴力枚举并统计在范围内的数. 具体看代码: #include<bits/stdc++.h> #define N 100005 #define in read() #define re register using namespace std; int n,m,l,r,block; int a[N],zhi,f原创 2020-09-19 14:29:44 · 284 阅读 · 0 评论 -
带修莫队模板
参考例题:luoguP1903[国家集训队]数颜色 / 维护队列 #include<bits/stdc++.h> #define N 150005 #define in read() #define re register//一堆优化 using namespace std; int n,m,k,a[N],num[1000005],ans[N],zhi,from[N],l,r,now; struct zb{ int l,r,poi,ti;}q[N]; int Cnum=0,Qnum=0; st原创 2020-09-18 21:41:58 · 139 阅读 · 0 评论 -
分块学习基础
分块介绍 有一种代码比树状数组、线段树简单,效率比暴力法高的算法,称为“分块”,它能以O(m∗n0.5){O(m*n^{0.5})}O(m∗n0.5)的复杂度解决“区间修改+区间查询”问题。简单地说,分块是用线段树的“分区”思想改良的暴力法;它把数列分成很多“块”,对涉及到的块做整体性的维护操作(类似于线段树的lazy-tag),而不是像普通暴力法那样处理整个数列,从而提高了效率。用一个长度为n的数组来存储n{n}n个数据,把它分为t{t}t块,每块长度为n/t{n/t}n/t . 分块模板 ...原创 2020-09-12 16:23:28 · 248 阅读 · 0 评论 -
luoguP1494小Z的袜子
题目描述 小Z的袜子 (因自己的gcd没有return而RE了一天的题 ) 作为一个生活散漫的人,小 Z 每天早上都要耗费很久从一堆五颜六色的袜子中找出一双来穿。终于有一天,小 Z 再也无法忍受这恼人的找袜子过程,于是他决定听天由命…… 具体来说,小 Z 把这 N 只袜子从 1 到 N 编号,然后从编号 L 到 R (L 尽管小 Z 并不在意两只袜子是不是完整的一双,甚至不在意两只袜子是否一左一右,他却很在意袜子的颜色,毕竟穿两只不同色的袜子会很尴尬。 你的任务便是告诉小 Z,他有多大的概率抽到两只颜色相原创 2020-07-23 16:45:10 · 90 阅读 · 0 评论 -
异或序列luoguP4462
题目描述 已知一个长度为n的整数数列a1,a2,...,an{a_1,a_2,...,a_n}a1,a2,...,an. 给定查询参数l,r,问在al,al+1,...,ar{a_l,a_{l+1},...,a_r}al,al+1,...,ar . 区间内,有多少子序列满足异或和等于k。也就是说,对于所有的x,y (I ≤ x ≤ y ≤ r),能够满足ax⨁ax+1⨁...⨁ay=k{a_x \bigoplus a_{x+1} \bigoplus ... \bigoplus a_y =原创 2020-07-21 17:01:09 · 170 阅读 · 0 评论 -
莫队算法模板luoguP2709
题目描述 小B 有一个长为 n 的整数序列 a,值域为 [1,k]. 他一共有 m 个询问,每个询问给定一个区间[l,r],求: ∑i=1kci2{\sum\limits_{i=1}^k c_i^2}i=1∑kci2 其中 ci{c_i}ci 表示数字 i 在[l,r]中的出现次数。 小B请你帮助他回答询问。 输入格式 第一行三个整数 n,m,k。 第二行 n 个整数,表示 小B 的序列。 接下来的 m 行,每行两个整数 l,r。 输出格式 输出 m 行,每行一个整数,对应一个询问的答案。 莫队思想原创 2020-07-21 14:02:04 · 145 阅读 · 0 评论