【题解】HDU3397 Sequence operation

本文详细解析了HDU3397题目,它是一道涉及线段树区间合并和修改的综合问题。文章介绍了四种操作:0、1、2、3和4,分别对应区间清零、置一、翻转、计数和最长连续1串长度,并讨论了在实现这些操作时需要注意的细节,包括pushup、reverse、pushdown和creat函数的调整。最后强调了初始化的重要性。
摘要由CSDN通过智能技术生成

传送门
原题是SCOI2010序列操作。HDU上的版本是其加强版(多组数据),还要初始化。我是不会对你说我不加初始化然后在HDU上WA了无数次的

没错,这就是一道线段树区间合并和区间修改的综合模板神题。

线段树区间合并不会的童鞋们请参考


接下来讲讲如何实现这几种操作:

  • 0 a b change all characters into ‘0’s in [a , b]
    意为把区间 [a,b] [ a , b ] 中的所有数改成0,就是板子里的 set() s e t ( ) ,略过。
  • 1 a b change all characters into ‘1’s in [a , b]
    意为把区间 [a,b] [ a , b ] 中的所有数改成1,还是板子里的 set() s e t ( ) ,略过。
  • 2 a b change all ‘0’s into ‘1’s and change all ‘1’s into ‘0’s in [a, b]
    意为把区间 [a,b] [ a , b ] 中的0和1对调,由于存在2操作和3操作,使得我们像板子里一样只维护关于1的信息变得不可行,所以我们还要维护关于0的信息,所以这题就特别恶心。 pushup() p u s h u p ( ) 中还要加入对0的维护。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值