位运算练习笔记
CF809C Find a car
找找规律,发现和位运算有点关系,然后用类似树状数组的东西解决。题解
CF878D Magic Breeding
对于每一个生成的数,处理出初始的 \(k\) 个数值如果都是 \(0\) 和 \(1\) 且 \(01\) 状态为 \(mask\),最后得到的答案是多少(可以用 \(bitset\) 压)
修改:取 \(\max\) 相当于按位或,取 \(\min\) 相当于按位与。
查询:对于每一个数 \(x\) ,如果把大于等于 \(x\) 的数都设为 \(1\),其他为 \(0\),求答案是 \(1\) 的情况的 \(x\) 的最大值。
P7324 [WC2021] 表达式求值
和上面那题几乎一样。处理出初始的 \(m\) 个数值如果都是 \(0\) 和 \(1\) 且 \(01\) 状态为 \(mask\),最后得到的答案是多少。
查询也是对于每一个数 \(x\) 把大于等于他的数设为 \(1\),其他为 \(0\),差分得到表达式答案为 \(x\) 的方案数。
P7326 [w33z-2018] Dream and Evaluation
直接计算会有很多浪费,可以用 \(\omega\) 个询问放在一起,并行计算,可以大大提升效率,时间复杂度 \(\Theta(n \times \frac{m}{\omega})\)