zoukankan      html  css  js  c++  java
  • 异或

    1 线性基

    不会。

    2 字典树

    用 Trie 解决 xor 的核心思想就是:贪心地选相反的一位。下面通过题目说明。

    2-1 超水例题

    题意

    给你 (n) 个数 (a_i)(T) 次询问,每次询问一个数 (x),求选取一个 (a_i) 使 (a_i ext{ xor }x) 最大是多少。

    (n,Tle 10^5,a_ile 2^{30})

    题解

    首先是插入。

    我们把 (a_i)​​ 拆分成二进制,从高位到低位插入进 01字典树 中。比如一个数二进制为 1010,则:

    X---1---2---3---4
      1   0   1   0
    

    差不多这个意思……

    在每个叶子节点我们设 (w_i)​,为根到此叶子代表的数字是什么。显然插入到结尾的时候顺便放入赋值就行了。

    再下是查询。

    对于 (x)​ 拆分成的二进制,从高到低把它放在字典树中,到了第 (d) 层的某一点,如果 (x) 二进制从高到低的位是 1,则走此点的 0 儿子;如果位是 0,则走此点的 1 儿子。(当然,如果此点只有一个儿子,就只能走这个儿子了)

    最后走到叶子节点,则答案就是 (x ext{xor} w_i) 啦。

    2-2 最大异或和

    链接,题意略。

    建立可持久化字典树,云云。

    2-3 异或粽子

    略。

  • 相关阅读:
    li float后IE下有空格
    [转]输入框对齐问题
    footer贴在底部的布局
    css3.0参考手册
    Java变量的命名规范
    刷题01
    前端面试题
    Cadence学习封装制作(焊盘)
    Cadence学习文档后缀简介
    Cadence学习PCB设计(序)
  • 原文地址:https://www.cnblogs.com/BlankAo/p/15111584.html
Copyright © 2011-2022 走看看