好的,这是整理好的题面,不含解题思路,只包含样例解释。
题目描述
有 N 个变量 X0∼XN−1,每个变量的可能取值为 0 或 1。
给定 M 个算式,每个算式形如 Xa op Xb=c,其中 a,b 是变量编号,c 是数字 0 或 1,op 是 AND, OR, XOR 三个位运算之一。
求是否存在对每个变量的合法赋值,使所有算式都成立。
输入格式
第一行两个整数 N 和 M。
接下来 M 行,每行包含三个整数 a,b,c,以及一个字符串表示位运算(AND, OR, XOR 中的一个)。
输出格式
输出结果,如果存在则输出 YES,否则输出 NO。
数据范围
- 1≤N≤1000
- 1≤M≤106
输入样例
4 4
0 1 1 AND
1 2 1 OR
3 2 0 AND
3 0 0 XOR
输出样例
YES
样例解释
N=4 个变量 X0,X1,X2,X3,M=4 个算式:
-
X0 AND X1=1
含义:X0 和 X1 同时为 1 时,AND 结果才是 1,所以 X0=1,X1=1。
-
X1 OR X2=1
含义:X1 或 X2 至少一个为 1 时,OR 结果为 1。
由式 1 知 X1=1,已经满足 OR 条件,所以 X2 可以是 0 或 1。
-
X3 AND X2=0
含义:X3 和 X2 不能同时为 1。
若 X2=1,则 X3 必须为 0;若 X2=0,则 X3 任意。
-
X3 XOR X0=0
含义:X3 和 X0 必须相同(XOR 结果为 0 表示两者相等)。
由式 1 知 X0=1,所以 X3=1。
检查一致性
由式 4:X3=1
由式 3:X3=1 则 X2 必须为 0(否则 AND 为 1)。
由式 2:X1=1,X2=0,OR 为 1 ✅
由式 1:X0=1,X1=1 ✅
得到一组赋值:X0=1,X1=1,X2=0,X3=1,满足所有算式。
所以存在,输出 YES。