具体推荐先看这个《由对称性解2-SAT问题》算法合集之《由对称性解2-SAT问题》
看完了就基本明白2-SAT是怎么一回事,说白了就是约束!而做这种题的关键是建图!其他的就套模板,什么强连通缩点,拓扑染色。。。
下面就具体以poj两道题为例说说,poj3683是输出具体方案,poj2723是输出方案数
算法流程:
总之:如果a与b矛盾,则建边(a,b');
注意:2-SAT每条边的关系都是确定的,例如i->j,取i后就必须取j,好好体会体会
2-SAT问题
此类问题理解合取式的含义就不难
POJ 2723 - Get Luffy Out(中等)
http://blog.csdn.net/leolin_/article/details/6680144
POJ 2749 - Building roads(较难)
http://blog.csdn.net/leolin_/article/details/7215886
解法:二分 + 2-SAT判定
POJ 3207 - Ikki's Story IV - Panda's Trick(基础)
http://blog.csdn.net/leolin_/article/details/7215850
解法:简单的2-sat,不过其他方法更快
POJ 3648- Wedding(中等)
http://blog.csdn.net/leolin_/article/details/7215359
解法:用2-sat做会比较有意思,但是暴搜照样0ms
POJ 3678 - Katu Puzzle(基础)
http://blog.csdn.net/leolin_/article/details/7215871
解法:直接按合取式构图验证就行了
POJ 3683 - Priest John's Busiest Day(中等)
http://blog.csdn.net/leolin_/article/details/6680093
解法:n^2枚举点之间的相容性构图,求解2-SAT