摘要: 有N个数,Q个操作(N<=1000000,Q<=3000)。操作为两种:1、L-R区间中所有数加一个W;2、询问L-R区间中所有数>=C的个数。(每次操作给出W或C)本题由于询问操作,我们直接用线段树或伸展树无法在区间中直接找出>=某个数的所有数来。一种解决的方法是:对于原序列建一颗splay,询问时找出区间后,对区间所在子树从子树根开始进行搜索,若当前子树所有节点的最小值>=C,则加上子树大小;否则递归调用左右子树。对于单次操作,修改是O(logn)的,但询问最坏情况就是O(n)的,所以总复杂度为O(NQ),与暴力无二异。我们也可以尝试用树套树,但由于修改也是在 阅读全文
posted @ 2011-10-04 21:24 FancyCoder0 阅读(257) 评论(0) 推荐(0) 编辑