前言
抽象模拟赛, 我现在菜的可怕
题面
疑似自出题, 反正不难, 就不找原题了
挂个 pdf
题目下载
算法
显然可以用线段树维护
观察到与运算和或运算的优先级不好处理, 考虑每一位分开处理(位运算常见处理方法)
如果是与运算, 一旦为 \(0\), 就只需要把前面的或与运算的 \(\rm{lazy_tag}\) 置为 \(0\)
如果是或运算, 那么不需要处理, 只需要记录为 \(1\) 即可
代码显然非常好打, 于是略
但是这题卡常严重, 于是思考能不能用一个线段树解决
对于一个数来说, 当之前的与运算把它其中一位置为 \(0\), 而后面又有或运算将其置为 \(1\), 那么在最终的答案统计中不应该与上这个 \(0\)
因此只需要在每次或运算时, 把先前的与运算的 lazy_tag 与上这个或运算的数即可
代码
后补
总结
多操作类型的题目, 应该想办法消除顺序的影响
当然之前连 线段树 2 都没做过, 没打出来可以理解