A20963.Lost Logic
省选/NOI-
通过率:0%
时间限制:1.00s
内存限制:128MB
题目描述
给定 3 组随机布尔变量 vi,1,...,vi,n(1≤i≤3),每组均为 n 个。你需要构造关于布尔变量 x1,...,xn 的若干组条件,使得满足全部条件的布尔变量赋值有且仅有 (vi,1,...,vi,n)(1≤i≤3) 这 3 组。
由于机器限制,你所构造每组条件的形式均应为:A→B。这组条件的限制了:当 A 为 1 时 B 一定为 1。其中,A,B 可能形如:
- xi:表示第 i 个变量的值。
- !xi:表示第 i 个变量取反后的值。
例如,如果你构造了 x1→x2,那么表示你规定 x1=1 时必有 x2=1;如果你构造了 !x1→x2,那么你规定了 x1=0 时必有 x2=1。你需要找到一种使用不超过 500 组条件来满足题意的方法,或者判定这样的条件组合不可能存在。如果有多组解,输出任意一组均可。
数据保证 2≤n≤50,vi,j∈{0,1}(1≤i≤3,1≤j≤n)。
输入格式
第一行包含一个整数n(2≤n≤50)——变量的数量。后面各有三行
描述一项任务。第k行包含n个空格分隔的整数v1k、v2k、⋯、vnk,其中每个vik是0或1,并表示第k-个赋值中变量xi的值。这三项任务都会有所不同。
输出格式
如果没有解决方案输出,则输出一行包含整数−1的内容。
否则,第一行应该包含一个整数m,其中1≤m≤500——约束的数量
在您的解决方案中。以下m行中的第kth应包含第k个约束。每个约束
应该是根据以下规则构造的字符串:
-变量是形式为“”的字符串xi”,其中i是介于1和n之间的整数,包括写入的没有前导零。
-literal是由一个变量组成的字符串,该变量前面可能有“{!}”字符。
-constraint是形式为“A{−>}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