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