• [题目小结] 线性姬


    因为是题目小结嘛……所以就:\(\mathcal{P}\text{ortal}.\)

    求序列第 \(k\) 小异或和

    首先特判存在异或和为零的情况。

    由于线性基与序列元素表示出相同的线性异或空间,所以实际上是求线性基表示出的第 \(k\) 小异或和。考虑将 \(k\) 二进制分解的过程,实际上就是第 \(i\) 位上的数值乘上第 \(i\) 位的权重(即 \(2^i\))之和。类似地,将 \(\{d\}\) 按下标升序排序得到 \(d_{p_1},d_{p_2},\dots,d_{p_k}\),定义第 \(i\) 位的权重为 \(d_{p_i}\) 即可。

    然而直接这样做是存在问题的。考虑 \(d_{p_j}\) 可能除了 \(p_j\) 这一位是 \(1\) 之外,\(p_i\) 这一位也是 \(1\)\(i<j\)),这就会使异或和变小。咋办呢?重新处理一下 \(\{d\}\),使得上述情况不发生即可。就像这样:

    void initialize() {
        for(int i=0;i<=60;++i)
            for(int j=0;j<i;++j)
                if(d[i]>>j&1) d[i] ^= d[j];
    }
    

    CodeForces - 587E Duff as a Queen

    首先,查询任意子集不同异或和就是 \(2\) 的区间线性基大小次方。

    对于区间的修改,不能将线性基全部异或同一个数,比如 \((01)_2,(10)_2,(11)_2\),线性基为 \(\{1,2\}\),异或某个数 \(k\),那么线性基内 \(1\text{ xor }k\text{ xor }2\text{ xor }k\) 还是 \(3\),而不是我们期望的 \(3\text{ xor }k\).

    但一个一个修改再重构显然是不现实的,这里有个差分的转化:令 \(b_i=a_{i-1}\text{ xor }a_i\),那么 \([a_l,a_r]\) 的线性基与 \(a_l,[b_{l+1},b_r]\) 的线性基等价。对于 \(b\) 数组而言,修改操作就变成修改 \(b_l,b_{r+1}\).

    用线段树维护 \(b\) 区间的线性基,复杂度 \(\mathcal O(n\log n\log V)\)。对于 \(a\),由于异或操作具有可加性,所以用树状数组维护修改前缀和即可差分出 \(a_l\).

    [BZOJ 2844] albus 就是要第一个出场

    \(\mathcal{C}\text{onclusion}\):设 \(n\) 个数的线性基大小为 \(k\),那么在 \(n\) 个数的 \(2^n\) 个异或和之中,每种异或和出现 \(2^{n-k}\) 次。

    考虑证明。由于不在线性基的数的异或和有 \(2^{n-k}\) 种方案,且每种异或和都有线性基内的数构成 唯一 的与之相等的异或和,所以有 \(2^{n-k}\) 种异或和为 \(0\) 的方案,且这也是所有异或和为 \(0\) 的方案(注意,什么都不选也是一种方案)。

    那么对于每种异或和(也即线性基构造的异或和),我们可以将它异或所有 \(0\) 异或和,这样还会得到这种异或和。结论感性地得证。

    那么类似求序列第 \(k\) 小异或和,将给定 \(Q\) 按主元二进制分解("主元" 指 \(d_i\) 的最高位),即可得到 \(Q\) 的排名。因为不是计算第 \(k\) 小,甚至都不需要预处理 \(\{d\}\).

    [WC 2011] Xor

    也算是个性质题吧 qwq.

    首先算出任意一条从 \(1\)\(n\) 的路径 \(P\),记其权值为 \(v\)。然后找出图中所有的简单环,将它们插入线性基,用 \(v\) 在线性基里面查询最大值即可。感性理解的话,就是将 "异或环" 看作一种运算:从某点走到环上一点 \(r\),绕一圈,再从 \(r\) 原路返回(像一个气球)。如果想要维持从 \(1\)\(n\) 的连通性的话,施加 "异或环" 即可。走路径再回来相当于零环,是无意义的。

    CF724G Xor-matic Number of the Graph

    和上一题很类似,就直接:\(\mathcal{P}\text{ortal.}\)

  • 相关阅读:
    java之大文件断点续传
    Html5大文件断点续传
    前端js怎么实现大文件G级的断点续传(分块上传)和分段下载
    HTML5解决大文件断点续传
    完整版断点续传、秒传,支持超大大大文件_支持重定义文件名和路径
    起来吧!不要做奴隶的ITproject师们!
    Oracle PL/SQL 编程基础 实例
    C语言高速入门系列(八)
    POJ 3253-Fence Repair(堆)
    抽屉式导航可能减少产品一半的用户參与度
  • 原文地址:https://www.cnblogs.com/AWhiteWall/p/16307676.html
Copyright © 2020-2023  润新知