
分块
文章平均质量分 60
PoPoQQQ
这个作者很懒,什么都没留下…
展开
-
BZOJ 2821 作诗(Poetize) 分块
题目大意:给定一个序列 多次求区间中多少个数出现次数为偶数次 强制在线很神的一道分块的题……记得刚进BZ坑的时候看到这道题50秒特别惊奇0.0 然后我就作死去交了个死循环0.0看了很多题解 都没看懂 最后还是把零碎的思想硬拼到一起才写完0.0我们首先分块 然后预处理一些东西首先是从第i块到第j块的答案 这个我们从第i块第一个点开始向右扫 开一个数组记录每个数的出现次数 扫到一个数就原创 2014-10-22 10:14:06 · 2466 阅读 · 0 评论 -
BZOJ 2038 2009国家集训队 小Z的袜子(hose) 莫队算法
题目大意:给定n个点,每个点有一个颜色,m次询问,每次询问一个区间内随机选出两个点颜色相同的概率是多少OTZ莫队算法……具体做法无论是分块还是曼哈顿最小生成树网上都讲解的很详细 我就不累述了这个题的做法是记录一个cnt数组表示当前区间内每种颜色有多少个加入一个颜色为x的点就ans+=cnt[x] 然后cnt[x]++减少一个颜色为x的点就cnt[x]-- 然后ans-=cnt[原创 2014-11-07 10:40:28 · 1935 阅读 · 7 评论 -
BZOJ 2957 楼房重建 分块
题目大意:给定n座楼,初始高度为0,每次可以改变某栋楼的高度,求每次改变高度之后从原点可以看到几栋楼记录每栋楼楼顶与原点连线的斜率 那么一栋楼可见当且仅当前面所有楼的斜率都小于这栋楼将n栋楼分为√(0.5*n*logn)块 每一块内维护一个单调上升子序列(注意不是LCS) 比如说4 1 2 3 5 那么维护的序列就是4 5修改的时候块内暴力重建 然后查询顺着块撸一遍 每次记录当前的最大原创 2014-12-16 10:54:34 · 2457 阅读 · 6 评论 -
BZOJ 3787 Gty的文艺妹子序列 分块+树状数组
题目大意:带修改、强制在线的区间逆序对将之前3744TLE了的某个做法重写了一发 把其中一些预处理改成了树状数组 不得不说树状数组常数还是小啊令g[i][j](iequals[i][j]表示前i块之内j的数量 这个直接暴力即可smaller[i][j]表示前i块之内小于等于j的数的数量 第一维暴力第二维树状数组修改时都维护一遍 查询时 首先我们把区间分为三块令A为左侧零碎部原创 2014-12-03 17:34:02 · 2624 阅读 · 1 评论 -
BZOJ 3809 Gty的二逼妹子序列 莫队算法+分块
题目大意:给定一个序列,多次询问[l,r]区间内[a,b]范围内的数有多少内存28MB,树套树可以歇菜了首先普通的莫队+树状数组应该都能想到 这样做每次增加/删除一个点是O(logn)的 查询也是O(logn) 时间复杂度O(m√nlogn) 过(bu)不(hao)去(ka)考虑将树状数组 改成分块 这样虽然查询变成了O(√n) 但是修改变成了O(1)的这样就把时间复杂度降到了O(原创 2014-12-22 20:20:34 · 2736 阅读 · 0 评论 -
BZOJ 3585 mex 莫队算法+分块
题目大意:给定一个长度为n的数组,m次询问某个区间内的mex值怒写莫队233将权值分成√n块,记录每个权值的出现次数以及每块内有多少权值出现过修改O(1)即可完成 查询时首先扫一遍找到第一个块内有没有覆盖的点的块 然后在块内暴力查找 时间复杂度O(√n)套个莫队 总时间复杂度O(m√n)#include #include #include #include #inclu原创 2015-02-01 22:48:03 · 3400 阅读 · 10 评论 -
BZOJ 1086 SCOI2005 王室联邦 块状树
题目大意:给定一棵树,要求将这棵树分成一些块,使每块大小在[B,3B]之间《手把手教你块状树系列》- -终于搞懂这题怎么做了- -去网上扒了个代码居然是错的 坑死我了- -还好题解的思想是对的朴素的分块方式是贪心 能加就加 这种方法存在着严重的效率问题 可以被菊花卡成O(n)块因此我们可以为其它的块预留位置 如果一块大小刚好>=b 就将这坨东西分成一块首先任选一点开始深原创 2015-01-16 08:13:01 · 3559 阅读 · 2 评论 -
BZOJ 3798 特殊的质数 分块打表
题目大意:求[l,r]区间内有多少个质数可以分解为两个正整数的平方和考虑到对于一个数Check一下是O(√n)的 我们可以将3*10^8分成3000块 每块10W 对于整块的打表求出有多少个质数 块内暴力令n为块的大小 则时间复杂度为O(n√n)打表时忘加优化忘开O2 打了一下午 各种酸爽#include #include #include #include #includ原创 2014-12-11 19:53:30 · 2942 阅读 · 0 评论 -
BZOJ 4026 dC Loves Number Theory 分块+十字链表/可持久化线段树
题目大意:给定一个序列,多次询问某段区间乘积的φ\varphi值对10007771000777的模我竟然卡过去了233333 将序列分块,记录fi,jf_{i,j}表示第ii块左端点到第jj个点中出现的所有质数pp的p−1p\frac{p-1}p之积 每次询问[x,y][x,y],首先取出[x,y][x,y]区间内所有数的积,然后乘上fst,yf_{st,y}(其中stst是xx后面第一个块端点原创 2015-04-30 16:19:58 · 2550 阅读 · 0 评论 -
BZOJ 3758 数数 分块打表
题目大意:定义一个数是完美的,当且仅当这个数的每一位可以分成两个集合,使这两个集合之和相等,求[a,b]区间内有多少个数是完美的数位DP?……不大好搞分块打表大法好!首先考虑验证一个数是不是完美的怎么搞求出数字和 如果是奇数肯定不是 如果是偶数就跑一下背包背包很慢?没关系,由于最大的和只能有9*8/2=36 所以我们直接状压 令f=1 然后对于每一位x有f|=f最后原创 2014-11-27 20:07:26 · 3060 阅读 · 3 评论 -
BZOJ 2141 排队 分块+树状数组
题目大意:给定一个序列,m次交换两个数,求初始逆序对数及每次交换后的逆序对数首先离散化,分块,对于每块建立一个树状数组,保存这个块中的所有元素然后对于每个询问(x,y) (xa[i]a[i]>a[x] ++ansa[i]a[i]>a[y] --ans然后对于块中的树状数组处理,块外的暴力注意此题元素有重复 亲测可信RANK5吓尿0.0 为何块套树要比树套树还快…原创 2014-10-22 11:43:50 · 2539 阅读 · 0 评论 -
BZOJ 3744 Gty的妹子序列 分块+树状数组+可持久化线段树
题目大意:给定一个序列,多次求区间内逆序对个数 强制在线让我们呐喊一声:出题人卡常数丧心病狂!再来一次:出题人卡常数丧心病狂!!!!不强制在线的直接莫队就能搞 强制在线我是跪了QTZ首先看这数据范围肯定O(n√nlogn)了 我们分块 令cnt[i][j]为从第i块的开头起到第j个点这段区间的逆序对数这个用树状数组就可以O(n√nlogn)搞出来 我一开始直接用可持久化线段原创 2014-11-13 23:04:39 · 3658 阅读 · 7 评论 -
BZOJ 3289 Mato的文件管理 莫队算法+树状数组
题目大意:给定一个序列,多次询问区间内逆序对的数量总算是明白城市旅行是如何RE的了……尼玛BZOJ坑爹 ostream输出流过大居然会RE!输出时顺手用了cout结果各种RE不止……原来是这样建议各位在死活RE就是找不到原因的时候检查一下是否大输出用了cout这题用莫队可以很简单搞掉 逆序对用树状数组就可以维护 一会去想想强制在线怎么搞#include #include #in原创 2014-11-13 19:53:36 · 1504 阅读 · 0 评论 -
BZOJ 3720 Gty的妹子树 块状树
题目大意:维护一棵树,每个点有一个权值,提供下列操作:1.询问某棵子树中有多少个节点的权值大于x2.修改某个节点的权值3.增加一个叶子节点强制在线传说中的树分块首先DFS,对于每个节点,如果这个节点的父亲节点所在块未满,就塞进父节点所在块中,否则自成一块,然后与父节点所在的块连边然后就按照分块直接搞吧0.0 细节实在是太多了 所以写挂的地方看看本蒟蒻的代码就好了0.0原创 2014-11-25 14:41:18 · 3060 阅读 · 0 评论 -
BZOJ 3731 Gty的超级妹子树 块状树
题目大意:同3720 增加了一个操作 即删除一个点与父亲节点的连边3720题解见 http://blog.youkuaiyun.com/popoqqq/article/details/41481439断开一个节点与父节点的连边时如果这个点是所在块的根节点,直接断掉就行如果这个点不是所在块的根节点,那么就要把这个块分裂,这个点以及在块中的子树都分裂到新的块中,细节讨论较多不大好写0.0然原创 2014-11-26 13:42:57 · 2273 阅读 · 0 评论 -
BZOJ 2738 矩阵乘法 分块
题目大意:给定一个矩阵,多次求一个子矩阵中的第k小正解:CDQ分治 不会 二维莫队? 不会 于是果断分块大法好(又是我们将这n*n个数排序 分n次插入 每次插入n个每次插入后 去链表上处理尚未出解的询问(我懒得写链表写了并查集) 如果当前询问的子矩阵内已经插入大于等于k个数 那么答案一定在当次插入的n个数中 暴力查找即可时间复杂度O(n^3+nq) 好卡……#inclu原创 2014-11-21 20:07:37 · 2596 阅读 · 0 评论 -
BZOJ 2741 【FOTILE模拟赛】L 分块+可持久化Trie树
题目大意:给定一个序列,多次询问[l,r]中最大子序异或和 强制在线一直RE的同学注意,本题的强制在线如果直接加会爆int导致调用数组下标为负首先我们有一个转化 维护前缀异或和数组a[] 那么[l,r]中最大子序异或和就是a数组中[l-1,r]中任取两个数的最大异或值然后分块处理 对于每块的第一个数a[i] 我们依次处理出对于所有的j>=i的[i,j]中的最大异或值 即s[i][j]=原创 2014-10-21 09:54:35 · 2507 阅读 · 0 评论 -
BZOJ 2002 HNOI2010 弹飞绵羊 分块
题目大意及LCT版本题解:见 http://blog.youkuaiyun.com/popoqqq/article/details/38849471今天手滑用分块又重写了一遍这道题0.0 分块就是短啊将弹簧分为√n块对于每个弹簧 我们记录一下从这个弹簧出发直到弹到块外为止的弹跳次数及落点查询沿着落点弹到出去为止 修改从块开始到这个点为止修改一遍这样修改和查询都是O(√n)的#inclu原创 2014-10-21 17:22:10 · 2470 阅读 · 0 评论 -
BZOJ 3343 教主的魔法 分块
题目大意:给定一个序列,提供两种操作:1.区间加上一个数2.询问区间中有多少大于等于C的数n将原数组复制一份副本,副本中每一块排序对于每次修改,中间块的部分打标记,两边修改后重建对于每次查询,中间块的部分二分答案,两边暴力枚举别忘考虑标记#include#include#include#include#include#define M 1001001us原创 2014-10-22 13:27:20 · 1550 阅读 · 0 评论 -
BZOJ 4129 Haruna’s Breakfast 带修改树上莫队+分块
题目大意:给定一棵树,每个点有一个非负点权,支持下列操作 1.修改某个点的点权 2.查询某条链上的mex 考虑链上不带修改的版本,我们可以用莫队来搞(链接戳这里) 现在到了树上带修改,果断糖果公园 本来抱着逗比的心态写了一发结果1.4s过了 跟糖果公园的80s完全不成正比啊0.0#include <cmath>#include <cstdio>#include <cstring>#原创 2015-06-12 15:12:27 · 2851 阅读 · 2 评论