LG6965 NEERC2016 Binary Code(Trie,2-SAT)
\(N\) 个 01 串每个串至多一位为 ? 问能否(要构造)把 ? 替换成 0 或 1 使得没有一个串是别的串的前缀。
把每个 ? 替换成 0 和 1 插入 Trie,然后如果你选了一个 Trie 上的串,那么所有子树里的、祖先路径上的、该点上的其他串的反串(即 0 边 1,1 变 0,没有 ? 就不变)都得选。前缀和建图(如果是一个点上多个串,就把它们当做一条链处理)跑 2-SAT 即可。时间复杂度 \(\Theta(N)\)。
错因:2-SAT 没有考虑反向边(之前打模拟赛的时候模拟费用流也是如此!),大意了。

浙公网安备 33010602011771号