代码源每日一题div2 异或和或

异或和或 - 题目 - 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同理

证明完毕

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值