• 「线性基」


    线性基是极小的能异或出任意元素异或出来的值的集合.
    线性基可以合并,不是很可以支持删除,但看过相关的博客好像有神仙可以.
    删除可以弄存活区间然后线段树.
    设线性基中有i个元素,那么共有(2^i)种异或值,每种值出现了(2^{n-i})次.
    异或值最大就从高位往低位贪心选取,如果当前答案没有这一位就异或上.
    异或值最小就是最低存在位的答案.
    取异或d的最大值,把异或值最大的初值赋成d.
    取第k小值.
    先把线性基上的元素化作最小的形式.
    也就是说,每个数都是有这一位的最小的数了.
    那么,我们类似倍增lca求lca的思路,从大的二进制位开始枚举.
    如果k>1<<i,就异或上这个数,同时相当于k-=1<<i.
    每一个有数的位都相当于是一次线段树上向两边中一边的选择的操作.
    这一位选1,或者不选1都各有1<<i个数.
    如果选了1,就有这一位选0的1<<i个数比它小,所以k必须能&1<<i.
    对于图上的异或路径数,可以转换成树,然后有若干个环在线性基里随便异或.

    1.梦想封印

  • 相关阅读:
    shell script数组使用函数输出
    Yii2文件上传
    ubuntu 安装遇到黑屏
    使用函数
    ionCube 安装
    记录LNMP环境彻底删除绑定域名及网站文件夹/文件的过程
    lnmp环境 开启pathinfo
    国外知名设计教程网址收集
    26个国外在线教育网站
    前端学习网站汇总
  • 原文地址:https://www.cnblogs.com/hzoi2018-xuefeng/p/12358401.html
Copyright © 2020-2023  润新知