传送门
Solution
考虑一下看到这种区间或与区间与的关系,拆一下位。
令(s_i)表示前缀和,则:
那么如果现在考虑到了第(i)为,有如下4种可能:
- (opt=1),(x)在(i)这位有值,那么就有(s_r-s_{l-1} ge 1)
- (opt=1),(x)在(i)这位没值,那么就有(s_r-s_{l-1} = 0)
- (opt=2),(x)在(i)这位有值,那么就有(s_r-s_{l-1} = r-l+1)
- (opt=2),(x)在(i)这位没值,那么就有(s_r-s_{l-1} leq r-l)
- (s_i>=s_{i-1}),因为值只有(0,1),所以前缀和一定会有这个性质。
所以发现这个就可以差分约束,然后随便搞一下你就发现,只有80pts!!!
80pts代码实现
咦,这是为什么啊?
然后考虑如果一段区间的&
是1,显然这一段都是1,所以就可以快速差分然后连边了,这样子,据(yyb)说可以加快...