根号平衡
O(1) 单点修改,O(n) 区间求和:序列分块,块上记录块内和。
O(n) 单点修改,O(1) 区间求和:序列分块,块上记录前面块的前缀和,点上记录块内的前缀和
O(n) 区间加,O(1) 单点查询:序列分块,整块打懒标记。
O(1) 区间加,O(n) 单点查询:序列分块,将区间加差分为两次区间修改,在块上和点上分别打上标记;查询时分块内块外查询后缀标记和。
给一个集合, O(1) 加入一个数,O(n) 查询第 k 大:值域分块,块上记录块内数字的总出现次数。
给一个集合,O(n) 加入一个数,O(1) 查询第 k 大:值域分块,对于当前所有已经有的数分块,每次加入一个数至多改变 n 个数所属的块编号。
CodeChef-Chef and Churu:
给长为 n 的序列,给定 m 个函数,每个函数为序列中第 li 到第 ri 个数的和。两种操作:将 ax 改为 y ;查询 [x,y] 之间的函数的和 (n,m≤105) 。