【2-SAT】

具体推荐先看这个《由对称性解2-SAT问题》算法合集之《由对称性解2-SAT问题》 

再看赵爽的2-SAT解法浅析 

看完了就基本明白2-SAT是怎么一回事,说白了就是约束!而做这种题的关键是建图!其他的就套模板,什么强连通缩点,拓扑染色。。。

下面就具体以poj两道题为例说说,poj3683是输出具体方案,poj2723是输出方案数

算法流程:

1.构图
2.求图的极大强连通子图
3.把每个子图收缩成单个节点,根据原图关系构造一个有向无环图
4.判断是否有解,无解则输出(退出)
5.对新图进行拓扑排序
6.自底向上进行选择、删除(具体实现时可以先反向建图变成一般的自上向下拓扑),拓扑的同时可以染色求解
7.输出

总之:如果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


















  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值