分块的一道题
题意:
区间+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}$