4
13
2015
0

我的线段树模板的一个坑点

我就是不听老人言……自己yy的模板果然出了问题……

这样的,我的写法里面必须push之后节点内的信息才是正确的

但是在modify中

注:#define lcq lc,l,mid             #define rcq rc,mid+1,r

if (a <= mid) modify(lcq,wq,d);

if (b >   mid) modify(rcq,wq,d);

upd(x);

碉堡了!可能只是递归到一边,然后另外一边没有push!真可怕!

所以应该改成

if (a <= mid) modify(lcq,wq,d); else push(lcq);

if (b >   mid) modify(rcq,wq,d); else push(rcq);

upd(x);

或者在upd里面加上push(lcq);push(rcq); 反正都一样,这样大概常数小一些

一定不要忘啦

Category: 未分类 | Tags: | Read Count: 181

登录 *


loading captcha image...
(输入验证码)
or Ctrl+Enter

Host by is-Programmer.com | Power by Chito 1.3.3 beta | Theme: Aeros 2.0 by TheBuckmaker.com