#P1745. [CERC2016] Lost Logic
[CERC2016] Lost Logic
Description
Gustav 正在阅读关于「2-可满足性」的问题,这是一个著名的问题,涉及为布尔变量分配真值以满足一系列「约束」——每个约束是涉及两个变量的简单逻辑公式。
我们使用 个变量 ,这些变量可以取值 (假)和 (真)。一个约束是形如 的公式,其中 和 都是可能被取反的变量。通常, 表示逻辑蕴涵: 仅在 为 且 为 时为 。变量 的取反表示为 。
给定变量的一个赋值,我们称约束在其结果为 时被「满足」。Gustav 构建了一系列约束,并正确地得出有「恰好三种」不同的变量赋值可以满足所有约束。Gustav 写下了所有三种赋值,但不幸的是,他丢失了约束列表。 给定三个变量的 个值的赋值,找出一个最多包含 个约束的列表,使得这三个给定的赋值是唯一满足所有约束的赋值。
Input Format
第一行包含一个整数 —— 变量的数量。接下来三行,每行描述一个赋值。第 行包含 个用空格分隔的整数 ,其中每个 不是 就是 ,表示第 个赋值中变量 的值。所有三个赋值将是不同的。
Output Format
如果没有解,输出一行包含整数 。 否则,第一行应包含一个整数 ,其中 —— 你解决方案中的约束数量。接下来的 行中的第 行应包含第 个约束。每个约束应根据以下规则构造一个字符串:
- 一个「变量」是形如「」的字符串,其中 是一个介于 和 之间的整数,且不含前导零。
- 一个「文字」是一个可能以「」字符开头的变量组成的字符串。
- 一个「约束」是形如「」的字符串,其中 和 都是文字。蕴涵符号由「减号」和「大于号」字符组成,且在蕴涵符号前后各有一个空格字符。
3
0 0 0
0 1 0
1 0 0
3
x1 -> !x2
x3 -> x1
x3 -> x2
4
0 0 1 0
1 0 0 0
1 0 1 1
-1
Hint
(由 ChatGPT 4o 翻译)
京公网安备 11011102002149号