码迷,mamicode.com
首页 > 其他好文 > 详细

分块的一道题

时间:2018-12-19 15:57:22      阅读:168      评论:0      收藏:0      [点我收藏+]

标签:size   sqrt   进入   大小   区间   判断   开始   二分   复杂   

题意:

区间+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}$

分块的一道题

标签:size   sqrt   进入   大小   区间   判断   开始   二分   复杂   

原文地址:https://www.cnblogs.com/yinwuxiao/p/10142893.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!