zoukankan      html  css  js  c++  java
  • [HNOI2012]与非

    题解:

    由于之前没有对位运算之间的关系仔细研究过,今天仔细推了一波

    首先 我们可以利用not和and推出所有位运算

    A or B =not (notA and notB)

    A xor B= ~((notA and notB)or (A&B))

    而本题中定义的nand

    我们会发现 x nand x=~x

    而~x nand ~y=x and y

    所以 换而言之,nand所向披靡的推出了所有位运算符

    那么考虑接下来的这件事情

    给定一些数,可以用not,or,and,xor 能组成多少数

    考虑这么一件事情,如果x的第i位和第j位不一样

    那么答案中第i位和第j位就互不相关了

    举个例子,不妨设x的第i位为1,第j位位0

    匹配到一个y 第i位为1,第j位为0

    那么xor一下 0 0

             or一下1 0

           xor再取反一下 1 1

           都取反再or一下 0 1

    同理可以发现所有都能匹配出所有情况

    然后这么yy一下能发现

    对于二元组(i,j)

    除非所有串中xi,xj都一样 否则最终xi xj无关

    这我感觉并不好证明

    然后就变成了基础的数位dp

    F[i][0/1]表示匹配到第i位,与原串的大小关系

    差分得出答案

  • 相关阅读:
    redis 学习(一)
    spring 学习总结(一)
    Struts2 学习(三)
    Python3 高级特性
    Python3 模块
    Python3 函数式编程
    Python3 函数
    Python3 列表
    Python3 字符编码
    Java Servlet 回顾
  • 原文地址:https://www.cnblogs.com/yinwuxiao/p/8807871.html
Copyright © 2011-2022 走看看