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位,与原串的大小关系

    差分得出答案

  • 相关阅读:
    STR[#6]
    整数
    一些应该记住的东西(持续更新?再也不会更新了)
    退役后的续命杂谈
    51Nod 快速傅里叶变换题集选刷
    支配树学习笔记
    动态点分治入门随讲
    KD树小结
    HNOI2013 BZOJ3142 数列
    BZOJ2001 HNOI2010 城市建设
  • 原文地址:https://www.cnblogs.com/yinwuxiao/p/8807871.html
Copyright © 2011-2022 走看看