POJ 3683 Priest John's Busiest Day
看这个题目之前可以先看POJ2186复习一下强联通分量的分解 题意:给出N个开始时间和结束时间和持续时间三元组,持续时间可以在开始后或者结束前,问如何分配可以没有冲突。 先解释一下合取范式(离散数学已经学过): 如果合取范式中的每个字句的文字个数不超过两个就称为2-SAT问题 一般性称为n-SAT问题 举个栗子: ( a ∨ b ) ∧ a ( a ∨ b ) ∧ a 在a为false而b为true时整个范式的取值为真。 利用强连通分量的知识,就可以在布尔公式字句个数的线性时间内解决2-SAT问题。在离散数学中我们已经学过蕴含范式。对于 a ∨ b a ∨ b 可以转换为 ( a b ) ∧ ( b a ) ( a b ) ∧ ( b a ) 下面就是建图过程了: 对于每一个布尔变量x,构造两个顶点x和 x x ;以 为有向边建立有向图。 在有向图中,如果a能到达b的话,a为真则b也为真。 因此在同一个强连通分量中所含的所有文字代表的布尔值都相同。 特别注意的是,假设x和 x 都在同一个强连通分量中,则显然,这个强连通分量始终不可能为真。 相反,如果不存在这样的布尔变量,对于每个布尔变量x,让 x所在的强连通分量的拓扑序在 x x 所在的强连通分量之后,(也就是比较二者的拓扑序) 就是使得该公式的值为真的一组合适的布尔变量的解。 ――――――-我是分割线――――――――-