2018省选训练29 A

http://www.gdfzoj.com/oj/contest/375/problems/1
线段树妙题,题意是给定一个数列,操作有区间与/或一个值,和查询区间最大值。
维护一个same表示,区间内的数哪些位是全部相同的,以及bit,表示相同的是什么,修改操作本质是将一个区间某些位强制赋为1/0,如果修改的位是当前区间same的子集,直接用一些奇奇gaygay的位运算,最后发现,相当于区间加一个数,直接打个tag就行了~~~

复杂度的话,大概是每次会多出很少的段,但是会把很多段合并,于是每次减得多加的少,复杂度很科学~~~

代码:http://www.gdfzoj.com/oj/code/116249

你可能感兴趣的:(OI,数据结构,GFOJ)