ACM练级日志:Level 3的线段树标记下传

前几日参加了西山居比赛,里面有一道线段树题,代码量奇大,不过就是稍微变了点花样的标准线段树Lv3题,就是插入删除一些线段,然后问你其中最左边的长度至少为x的线段在哪儿。这道题前天调了2个小时终于AC,使我想起了Lv3中我一直挂到现在的题:也是不断插入、删除线段,然后问你所有连续的空余线段中最长的一个长多少,两道题几乎一样。


西山居题调了两小时,最后发现是标记下传写错了…… 标记下传需要应用的场合很多,应该说,只要你访问的是这个区间的“一部分”,就应当先标记下传再干别的事。而且标记下传的时候,要在父亲这儿把儿子的信息修改好,然后告诉儿子自己的标记。如果少标记下传的话是肯定要出错的。


另外,标记下传通常行数比较多…… 而且经常在不同的模块里用,所以最好写成函数。我一般用downpass来命名这个函数。


我原来一直以为poj的1823是不需要记录颜色的,后来发现还真需要,不然标记下传的时候没法传……这就作为一个经验吧。


修改了标记下传的函数以后,1823瞬间AC……Lv3似乎只剩下一道计数的题了。


另外这种标记下传出错特别恶心,如果没有20几个操作,根本就看不出错误,所以测试这种题的时候,一定要设计一个规模大一点的数据,然后在纸上模拟一下,这样才会查出错误。当时然有了上面的经验,出错的概率应该已经减少了吧。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值