分块的一道题

Posted yinwuxiao

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了分块的一道题相关的知识,希望对你有一定的参考价值。

题意:

区间+k,查询=c的个数(c一开始给定)

1.当k为正数

2.不保证k为正数

题解:

两个的复杂度是不一样的

1的话显然每个数只会成为1次c

我们记录区间比c小的最大值就可以了

每次进入一个区间当且仅当这个区间有+k>c的数

复杂度$nlogn$

2的话我们考虑分块

里面开个数组维护一下从小到大排列

***下面的$\sqrt{n}$应该是$block$和$n/block$

查询显然是块内二分$\sqrt{n}logn$

修改刚开始以为也是$\sqrt{n}logn$的

对于整块的打加标记$\sqrt{n}$

对于零散可以不用插入后排序

我们按照原来排序扫过去,然后判断这个数在不在当前区间

于是变成合并两个有序表归并排序

于是改个块大小复杂度$n\sqrt{nlogn}$

以上是关于分块的一道题的主要内容,如果未能解决你的问题,请参考以下文章

BZOJ 2724 蒲公英 | 分块模板题

HDU6395-Sequence 矩阵快速幂+除法分块

骗分大法之-----分块||迷之线段树例题a

[Violet]蒲公英

bzoj2301 [HAOI2011]Problem b莫比乌斯反演 分块

BZOJ 2002 LCT板子题