传送门
原题是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的维护。