摘要: 1 /* 2 门是按顺序打开的,这点非常重要。 3 4 2SAT,建图,判断有有解 5 关于限制条件,对于key pair.有关系 a and b = 0,最多只能用1个,a1b0,a0b1,a0b0 6 对于门上的key pair,有关系 a or b = 1,只要有一个是1就行,a1b1 a1b0 a0b1 7 关系转化为边,可参考3678 8 9 可用二分加速 10 */ 11 12 // include file 13 #include <cstdio> 14 #include <cstdlib> 15 #include <cstring> 16 # 阅读全文
posted @ 2011-02-28 21:54 AC2012 阅读(442) 评论(0) 推荐(0) 编辑
摘要: 1 /* 2 2SAT验证题目。对边进行构图,边最多500条,分别判断每两条边是否能够相交 3 如果相交,加限制条件,和3678很相似 4 */ 5 6 // include file 7 #include <cstdio> 8 #include <cstdlib> 9 #include <cstring> 10 #include <cmath> 11 #include <cctype> 12 #include <ctime> 13 14 #include <iostream> 15 #include < 阅读全文
posted @ 2011-02-28 19:29 AC2012 阅读(295) 评论(0) 推荐(0) 编辑
摘要: 1 /* 2 属于2SAT验证的题目。判断是否存在2SAT解 3 首先用scc算法缩图,判断只要没有对应的两点在一个强连通分量里面就算右解 4 构图的方法: 5 a & b = 1, 则a和b都必须为1,那么如果a选择了0,也必须转到1,所以a0->a1,对于b也是b0-b1 6 a和b只要有选择0,都必须重定向到1 7 8 a & b = 0,则a和b只要有1个是0就行了,所以如果b选择了1,则a必须选0,a选择1的时候,b必须选0 9 b1->a0,a1->b0 10 11 a | b = 1,则a和b中只要有1个1就行了,所以如果a选择了0,则b必须选择 阅读全文
posted @ 2011-02-28 18:08 AC2012 阅读(816) 评论(0) 推荐(0) 编辑
摘要: 1 // include file 2 #include <cstdio> 3 #include <cstdlib> 4 #include <cstring> 5 #include <cmath> 6 #include <cctype> 7 #include <ctime> 8 9 #include <iostream> 10 #include <sstream> 11 #include <fstream> 12 #include <iomanip> 13 #include 阅读全文
posted @ 2011-02-28 14:26 AC2012 阅读(195) 评论(0) 推荐(0) 编辑
摘要: Cheriyan–Mehlhorn/Gabow algorithm这个算法的思路和tarjan算法差不多,效率要比tarjan算法快一点。算法需要两个栈来进行维护。下面这个伪代码是tarjan的伪代码修改过来的。从结构上看非常的相似。 1 algorithm gabow is 2 3 input: graph G = (V, E) 4 5 output: set of strongly connected components (sets of vertices) 6 7 8 9 index := 110 11 S1 := empty12 13 S2 := empty14 15 for eac 阅读全文
posted @ 2011-02-28 14:24 AC2012 阅读(243) 评论(0) 推荐(0) 编辑