一些统计维护的问题
一些统计维护的问题
原文下载地址@http://pan.baidu.com/share/link?shareid=2769571370&uk=36862589
树形数据结构方法
NOI2005 sequence
区间插入、删除、统一修改、翻转、求和、求最大子序列
Spoj 10628. Count on a tree
无修改的区间/树链上第K大
划分树
CTSC2008 nextwork
有修改的区间/树链上第K大
BZOJ3083: 遥远的国度
树的换根、链修改、子树查询
树链剖分![clip_image010 clip_image010](//images0.cnblogs.com/blog/320472/201308/08193014-7298542e23e649a18699dc5d264afcef.png)
BZOJ2631 Tree(伍一鸣)
树的合并、分离、加减、询问
Bzoj3132:上帝造题的七分钟
子矩阵在线整体修改、求和
将标记分成四个修改(x,y)-(n,m)的标记
询问(p,q)则为
然后就是一个维护二维前缀和的事了。
bzoj2874: 训练士兵
子矩阵先离线整体修改,再在线求和
bzoj1452: [JSOI2009]Count
支持两种操作:改变子矩形中某个数,询问某个子矩阵中某个数出现的次数。
Tsinsen A1302. JZPFAR(顾昱洲)
给出N个点,M个询问点。询问离某点距离第k大的点。
Tsinsen A1365. 森林旅店
给出N个点,Q个操作。操作为询问离某点距离前k小的点或增加一个点。
分块方法
石家庄一中模拟赛p1裸
给一个长度为N的数列要求支持两种操作
(l,r,x)将一段区间整体加一个整数x若元素小于0则该元素变为0
(l,r)询问一段区间的和
厦门一中“炫动杯”NOIP2011 第四场模拟赛 p4
给一个长度为N的数列要求支持两种操作
(l,r,x)将一段区间整体加一个整数
(l,r,C)询问一段区间中有多少数不小于C
分块
Bzoj2821 作诗Poetize
求L-R出现偶数次数的数的个数
bzoj2741 【FOTILE模拟赛】L
在线询问区间内的最大的连续XOR和
常州一中某夏令营模拟赛 高速公路highway
一串长度为N的序列,要支持三个操作:
1、如果区间中没有损坏的,就将区间所有数都减去一个值,答案加1,如果操作完后有元素小于等于0,则标记为损坏
2、将区间所有未损坏的元素都加上一个值
3、给p,将区间所有未损坏且小于p的元素都变成p
Bzoj3005 体育课(sdoi2012)
一串长度为N的序列,要求支持三种操作:
1、给t,给L-R中的数分别加上(i-L+1)*t
2、交换两个数
3、查询L-R中的最大值
分块后问题实际转化为对于其中的一块支持三种操作:整体所有加一个t;给整体加一个增量t,即给第i个数加i*t;询问最大值。这个问题是一个经典的斜率优化问题,可以用单调队列预处理出每个元素的优势区间(边界考虑需细致),询问时二分查找当前增量即可。然后对于修改,整一块打标记,剩下边界暴力即可。询问也分为整一块询问和剩下边界暴力。交换直接对于两个块暴力修改即可。
复杂度O(N^1.5logN)
本题也可以做差可以转换成最大前缀和。利用t非负也可以将复杂度优化为O(N^1.5)。
bzoj2128: cheat
在线询问某个子矩形中a到b之间的数的个数
Bzoj2038: 小Z的袜子
询问区间[L,R]中随机抽出两个颜色相同的概率。
10707. Count on a tree II
询问树链上不同颜色数。
合并方法
Codechef August Challenge 2013 :Sereja and Ballons
N个盒子,每个盒子Ai个球,事先给你M个区间(Li,Ri),依次取出某个球,询问当前有多少个区间其中的所有盒子为空.
询问即统计S(Ri)-S(Li-1)==0的数量,开始每个盒子都是独立的块,如果一个盒子i已空,就将i所在的块与i-1所在的块合并(因为值相同),新增的答案即为Li-1在i-1所在的块且Ri在i所在的块的询问,发现是一个二维偏序的统计,利用主席树预处理即可单次O(logN)询问。
复杂度为O((N+Q)logN)/O(NlogN)。
分治方法
bzoj2738: 矩阵乘法(梁盾)
给你一个N*N的矩阵,每次询问一个子矩形的第K小数。
对于所有的询问一起二分答案,那么每次二分x后统计出所有询问矩阵中不大于x的元素个数(二维树状数组即可),二分后询问分为小于和不小于两种,然后对两种答案分别再二分即可(此时范围减半)。注意做不小于的询问时可以在原来树状数组的基础上直接做,最后还原即可。
Bzoj2683: 简单题
离线矩阵单点修改,在线求和
Bzoj2716: 天使玩偶
离线增加点,询问离某点曼哈顿最近的点的距离。
树的分治方法
BZOJ2566 xmastree
给一颗点带颜色的树,支持修改点颜色和查询最近相同颜色对。
Codechef August Challenge 2013 : Prime Distance On Tree
统计树中dis(a,b)为质数的点对数量
点的分治+FFT
BZOJ1267: Kth Number I
统计树中dis(a,b)前K大的路径。