题库练习 Lost Logic
← 上一题 下一题 →

A1878 | Lost Logic

时间限制1s
内存限制128MB
通过 / 提交0/0

题目描述

给定 $3$ 组随机布尔变量 $v_{i,1},...,v_{i,n}(1\leq i\leq 3)$,每组均为 $n$ 个。你需要构造关于布尔变量 $x_1,...,x_n$ 的若干组**条件**,使得满足全部条件的布尔变量赋值**有且仅有** $(v_{i,1},...,v_{i,n})(1\leq i\leq 3)$ 这 $3$ 组。

由于机器限制,你所构造每组条件的形式均应为:$A\rightarrow B$。这组条件的限制了:当 $A$ 为 $1$ 时 $B$ 一定为 $1$。其中,$A,B$ 可能形如:

- $x_i$:表示第 $i$ 个变量的值。
- $!x_i$:表示第 $i$ 个变量取反后的值。

例如,如果你构造了 $x_1\rightarrow x_2$,那么表示你规定 $x_1=1$ 时必有 $x_2=1$;如果你构造了 $!x_1\rightarrow x_2$,那么你规定了 $x_1=0$ 时必有 $x_2=1$。你需要找到一种使用不超过 $500$ 组条件来满足题意的方法,或者判定这样的条件组合不可能存在。如果有多组解,输出任意一组均可。

数据保证 $2\leq n\leq 50,v_{i,j}\in\{0,1\}(1\leq i\leq 3,1\leq j\leq n)$。

输入格式

第一行包含一个整数$n(2\leq n\leq 50)$——变量的数量。后面各有三行

描述一项任务。第$k$行包含$n$个空格分隔的整数$v_1^k、v_2^k、\cdots、v_n^k$,其中每个$v_i^k$是$0$或$1$,并表示第$k$-个赋值中变量$x_i$的值。这三项任务都会有所不同。

输出格式

如果没有解决方案输出,则输出一行包含整数$−1$的内容。

否则,第一行应该包含一个整数$m$,其中$1\leq m\leq 500$——约束的数量

在您的解决方案中。以下$m$行中的第$k$th应包含第$k$个约束。每个约束

应该是根据以下规则构造的字符串:
-*变量*是形式为“$\texttt”的字符串{x}i$”,其中$i$是介于$1$和$n$之间的整数,包括写入的没有前导零。

-*literal*是由一个变量组成的字符串,该变量前面可能有“$\texttt{!}$”字符。

-*constraint*是形式为“$A\texttt{->}b$”的字符串,其中$A$和$b$都是文字。暗示符号

由“减号”字符和“大于号”字符组成,并且只有一个空格暗示符号前后的字符。

输入输出样例

输入 #1
3
0 0 0
0 1 0
1 0 0
输出 #1
3
x1 -> !x2
x3 -> x1
x3 -> x2
输入 #2
4
0 0 1 0
1 0 0 0
1 0 1 1
输出 #2
-1
C++ 编辑器
输入
输出