pku3468 线段树lazy

线段树中有一个非常重要的东西叫做“lazy”也叫“yeptree”,(yep是2008年物理竞赛银牌保送sjtu联读班),因为yep和lazy在某种意义上是相似的?额,反正lazy是线段树中一个非常常用的东西。为什么管他叫lazy呢?就是每次在修改节点的sum值时,如果每次都下放到叶子节点,那么复杂度会变成nlogn,还不如直接暴力(树状数组还sqrt(n)呢,虽然我不会),而且对于某些修改一大段值的问题,用线段树动态维护的时候,如果找到了要修改的大区间,可以直接在这个大区间上标记,然后改掉sum值,等下次修改或者查询时再修改或者查询它的标记值,这样就可以做到每次查询或修改都为logn,大大节省了时间。

我也是很久没写线段树了,现在能用平衡树就平衡树,不知道怎么的。今天这道题本来很简单结果被我写了N节课一直wa,最后发现lazy之后算sum的时候有个细节没有处理好,额,我总是细节处理不好。但关键是我以前写带lazy的线段树很熟的,居然忘了。还有,现在写程序基本上都是100+,200+的,比noip那时候长多了。话说当时noip第三题标程才50行。

闲话不多说了,上题。

题目大意:

  给你N个数,Q个操作,操作有两种,‘Q a b ’是询问a~b这段数的和,‘C a b c’是把a~b这段数都加上c。

简略题解:

  就是线段树了,sum代表区间和,col代表染色,就是线段树最基本的操作了。

附程序(118行):

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值