题目大意
当前有一个矩阵MMM,需要判定当前矩阵是否存在可以通过指定方式变换而来。变换的方式是M(i,j)M_{(i,j)}M(i,j) 是由aia_iai |aja_jaj 所得。
题目思路
根据题意,如果存在一个序列aaa按照指定方式变换成目标矩阵,那我们可以分析得到如下操作:
aia_iai 这个位置只会影响到M(i,j)M_{(i,j)}M(i,j) 和M(i,j)M_{(i,j)}M(i,j) ,所以我们将aia_iai 转换为二进制,并且假设每一位上都是111。
因为aia_iai 上最多只能存在格子M(i,j)M_{(i,j)}M(i,j) 和格子M(i,j)M_{(i,j)}M(i,j) 二进制下存在的1,所以把两个格子的数值依次跟aia_iai 进行&运算即可。最后验证是否可以变成指定矩阵即可。
代码演示