2-sat学习笔记

算法流程
x0 ---> y1 表示x为false时y必须为true

最后输出的时候谁的bel小选谁

前后缀建图
例:要求n个变量满足至多有1个为true。
暴力:一个点的true向其它n-1个点的false连边,复杂度O(n^2)。
正解:prei表示前i个点是否有真。
prei的true向prei+1的true连边,prei+1的false向prei的false连边。
prei向i+1的false连边,i+1的true向prei的false连边。
i的true向prei的true连边,prei的false向i的false连边。
然后2-sat即可。

解决多元限制的方法通常是找性质+暴力枚举
例:
sol:手玩一下每个点的方程可以发现一些性质。

即每个点都可以用A(1,1)和第一行,第一列的各一个变量以及B矩阵来表示。
枚举A(1,1)后就可以2-sat了。

posted @ 2019-01-27 20:51  Creed-qwq  阅读(151)  评论(0编辑  收藏  举报