今天主要学习了线段树的一些应用。
-
线段树取模:
对一段区间上取模,其实只要考虑最大值与模数的关系。当模数大于最大值,就可以不用考虑了。当模数小于最大值,因为取模的特殊性质,若模数p满足p>x/2,则得出来的模数小于x/2;若模数p满足p<x/2,得出来的模数也会小于x/2。也就是说,每次取模,x至少会变成x/2,也就是最多log(x)次,就会把那个点变成1.也就是暴力进行取模,也可以满足条件。
对于线段树取模只需要暴力处理就可以了。 -
线段树lazy_tag的操作
线段树的tag需要考虑顺序。比如像hdu4578的有三个tag,一个覆盖tag,一个乘法tag,一个加法tag。这里tag的优先级:覆盖>乘法>加法。只需要在打一个tag时考虑对其他tag的影响,就能轻松自如的打很多个tag。其中,一般是高优先级对低优先级的有影响,反之没有影响。