CF1208F Bits And Pieces

枚举 \(i\)

从高往低贪心,令当前枚举到了第 \(t\) 位。

如果 \(a_i\) 的第 \(t\) 位为 \(0\),则尝试在 \(i\) 后面找两个位置 \(j,k\) 使得 \(a_j,a_k\) 的第 \(t\) 位都是 \(1\),且不违背前面已经选好的答案。「不违背」的意思是指,前面已经选好的每个要求是 \(1\) 的位,在 \(a_j,a_k\) 上也是 \(1\)

具体的,令前面已经选好的答案为 \(ans\),那么后两个位置 \(j,k\) 需要满足 \(ans+2^t \subseteq a_j, a_k\)

如何判断这样的 \(j,k\) 是否存在?高维前缀和预处理 \(p(x),q(x)\) 表示所有满足 \(y \subseteq x\)\(y\) 中最后和次后的出现位置。那么合法等价于 \(q(x) > i\)

posted @ 2025-01-23 15:50  2huk  阅读(4)  评论(0编辑  收藏  举报