
分块
文章平均质量分 67
mlzmlz95
这个作者很懒,什么都没留下…
展开
-
莫队算法小结
wtf,最近挖坑有点小多啊,没办法>_<容我先把糖果公园A了再来写这个吧= =看看今天能不能A掉好吧,我承认我第二天才把糖果公园A掉>_<下面把这篇小结补上首先众所周知的是莫队算法是要把询问先按左端点属于的块排序,再按右端点排序复杂度就先不证了,有兴趣的同学可以自己YY下或者查阅资料下面举几个例子详细说明1.小Z的袜子Description:给定一个序列mm个询问每次询问:区间中选两个数,两个数相原创 2015-02-08 20:45:13 · 2104 阅读 · 2 评论 -
Codechef Chef and Churu
Description有一个n个数的数组a,有n个函数,每个函数是返回[li,ri]的和有一个n个数的数组a,有n个函数,每个函数是返回[l_i,r_i]的和有两种操作1 x y:将数组第x个元素值修改为y2 m n:询问[m,n]函数的和n,q≤105n,q\leq10^5Solution我们可以考虑分块,将函数分为n−−√块\sqrt{n}块,预处理出每块函数和以及每块函数中每个数算的次数,再用原创 2015-02-25 20:10:21 · 1002 阅读 · 0 评论 -
bzoj 2957 楼房重建
Description给定n座楼,初始高度为0,每次可以改变某栋楼的高度,求每次改变高度之后从原点可以看到几栋楼Solution 1一个比较显然的做法是分块,假设块大小是S,分为L块,维护每块中斜率单调上升的序列每次暴力修改复杂度为O(S)O(S)每次询问时对每块序列中二分第一个大于之前斜率的位置即可,复杂度O(L∗logN)O(L*logN)显然S=N/S∗logN即S=NlogN−−−−−−√S原创 2015-02-26 16:43:16 · 1104 阅读 · 0 评论