异或和或 - 题目 - Daimayuan Online Judge
题意:
你有一个长度为n的01串,有这么一种操作:
1.选取两个数,把其中一个数变成两个数异或的结果,把另一个数变成两个数或的结果
问你能不能经过有限次操作,使得01串s变成另一个01串t?
思路:
鉴定为操作+结论题
首先看操作的直观结果
显然:
0 0 -> 0 0 or 0 0
0 1 -> 1 1 or 1 1
1 0 -> 1 1 or 1 1
1 1 -> 1 0 or 0 1
概括一下就是,只要旁边有1,就能把这个数变成0或1的任意数
先说结论:当且仅当s串和t串都没有1或都有1时可以经过有限次操作使得s变成t
证明:
使s变成t,实际上就是在特定的位置把0变成1,在特定的位置把1变成0
比如说我们要把某个位置的0变成1
如果这个位置上的01周围存在1,那么周围的1可以把省略号上的数字都染成1,然后把0变成1后再把前面省略号上的1变成0,这样就等价操作为把0变成1
1.........0
1...1
1变成0同理
证明完毕