
分块
文章平均质量分 50
DOFYPXY
这个作者很懒,什么都没留下…
展开
-
[2017雅礼7-6]right 分块
稍加分(da)析(biao)可知,当p为奇数时,SG(x)=x&1,当p为偶数时,SG(x)=(x%(p+1)==p)?2:((x%(p+1))&1)。 奇数的话相当于区间翻转,区间异或和,直接线段树即可。 偶数的话分块来处理,每个块维护一个add标记和两个有序数组,分别表示奇余数和偶余数,区间加的时候整块的打标记,零散的直接重构,时间复杂度O(n/s+slogs)。查询的时候整块lower_b原创 2017-07-09 21:13:38 · 402 阅读 · 0 评论 -
[BZOJ2957]楼房重建
首先显然可以把点看成斜率,然后就是求一个从头开始的最长上升子序列,支持单点修改。 分块做法(无脑): 考虑把序列分成BB块,每一块维护一个从头开始的最长上升子序列,并用一个栈记录。每次询问相当于把所有块扫一遍,在当前块栈中二分到第一个大于上一块最大值的位置,然后贡献加上其到栈顶的元素个数,复杂度O(nlogBB)O(\frac{n\log B} {B})。修改就直接暴力重构块,复杂度O(B)O原创 2018-01-11 21:54:15 · 329 阅读 · 0 评论 -
[2018雅礼集训1-23]ete 分块
题面 首先有个性质,就是以某个点为开始\结束的所有前缀\后缀or和只有log" role="presentation" style="position: relative;">loglog\log种,虽然很显然,但要是没想到这题就别做了。 考虑分块,设块大小为B" role="presentation" style="position: relative;">BBB,每个块记录mxi" rol原创 2018-01-24 21:14:44 · 732 阅读 · 0 评论 -
[2018雅礼集训1-18]风吕 分块
设B=nm−−−√B=\sqrt{nm},先把权值离散化,然后排序,把每BB个权值分成一块,维护一个二维前缀和。询问时整块的O(1)O(1),单块的O(B)O(B)暴力,总复杂度O(qB)O(qB)。 当然还有各种数据结构做法,比如说可持久化{线段树套线段树}。。。外层线段树维护X轴,内层线段树维护Y轴,然后权值离散排序,每次添加一个权值也就只会改变一个地方,可持久化的那条链要从外层线段树一直延原创 2018-01-18 20:10:33 · 790 阅读 · 1 评论 -
[2018雅礼集训1-20]B 分块
题面 考虑把序列分成N−−√\sqrt N块,记cnti,jcnt_{i,j}表示第ii块颜色jj的个数,设si,js_{i,j}为i,ji,j两块之间产生的贡献,通过cntcnt可以O(N−−√)O(\sqrt N)求出,然后对其二维前缀和一下,就可以O(1)O(1)求出一段块的贡献了。 对于单独的块再考虑其内部,和其对中间整块的贡献,加上去即可。 复杂度O(NN−−√)O(N\sqrt原创 2018-01-20 20:34:31 · 466 阅读 · 0 评论 -
[Codeforces 966]E - May Holidays 分块+虚树
对询问分块,把每n−−√n\sqrt{n}个询问放在一起处理,并对这些询问涉及到的点建出一棵虚树。 把一个点的反转看成是其到根的路径上的每个点titit_i的+1+1+1或−1−1-1,那么虚树上一条边的titit_i变化都是相同的。我们在处理每一块之前重构所有的titit_i,然后对于每条边维护所有没有去度假的人的titit_i,并使之有序且要把titit_i相等的合并起来,然后只需要再维护一...原创 2018-05-20 19:23:03 · 534 阅读 · 0 评论 -
[联合集训6-19] K小数查询 分块+二分答案
有一种常数比较小的O(nn−−√log2n)O(nnlog2n)O(n\sqrt n \log^2 n)的做法。 分块,每个块维护一个其中元素排好序之后的数组。修改的时候零散块直接重构,整块打标记。询问的时候先二分答案midmidmid,那么就转化成求小于等于midmidmid的数的个数,对于零散的块重构后暴力数,整块的如果标记≤mid≤mid\le mid答案就是块大小,否则直接在数组上二分...原创 2018-06-21 21:36:58 · 407 阅读 · 0 评论 -
[2018江苏省队集训] value 值域分块+斜率优化
先考虑a=ba=ba=b的情况。 我们按aiaia_i从小到大排序,枚举iii并令x=aix=aix=a_i,那么[i,n][i,n][i,n]都是xxx的贡献,接下来就是找一个最大的bj⋅(i−j),(j∈[1,i−1])bj⋅(i−j),(j∈[1,i−1])b_j\cdot (i-j),(j\in[1,i-1]),看成关于iii的函数就是bj⋅i−bj⋅jbj⋅i−bj⋅jb_j\cdot...原创 2018-07-06 21:17:42 · 766 阅读 · 0 评论