zoukankan      html  css  js  c++  java
  • 线性基

    线性基是一个比较好学但是可能用处并不大的算法。

    下面是我觉得比较好的两篇博客。

    线性基浅谈

    线性基详解

    线性基的复杂度非常优秀,正常插入的话就是 \(O(n*64)\) 的,百万的数据是随便跑的。

    线性基最重要的是它的几个优秀的性质,一般线性基的题目都考察这些性质。

    1. 原数集中的数字异或出来的值域 与 线性基中的元素以后出来的值域相等。
      这个很重要,说明线性基可以代替原数集进行下一步的操作,也是线性基正确性的保障。

    2. 线性基是精简的,而不是冗余的。
      这个就是说线性基是满足条件的最小数集,而且也不会多,具体来说有这么几个小性质:
      线性基中没有异或和为零的非空子集。
      线性基中的选取元素的每一种方案,都对应一个异或值,不存在多种选取方案对应同一个异或值的情况

    以上为线性基的两大性质,这两个性质是线性基的基础。

    关于做题的话,主要的难度方面是你很难想到这是一道线性基的题目,一般来说想到之后就不难了。

    补充线性基基本用途:

    1. 查询n个数异或的最大值。
    2. 查询n个数异或的最小值。
    3. 查询某个数是否能被异或得到。
    4. 查询n个数异或的k小值。
  • 相关阅读:
    FFT学习笔记
    FWT(Fast Walsh Transformation)快速沃尔什变换学习笔记
    GMS2游戏开发学习历程
    [BZOJ3238][AHOI2013]差异 [后缀数组+单调栈]
    Trie树简单讲解
    自己的题
    小技巧
    编程注意事项
    构造方法
    递归
  • 原文地址:https://www.cnblogs.com/longdie/p/xianxingji.html
Copyright © 2011-2022 走看看