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

    概念:

    对于若干个$m$位的二进制数$a_1,a_2,……,a_n$,它们任意组合异或出的结果全部可以用不超过$m$个数$b_1,b_2,……,b_n$异或出来

    且$b_i$的最高位是第$i$位,则$b$称为$a$的线性基

    构造:

    每向a中加入一个元素$x$时,从高到低扫描$x$的每一位

    扫描到第$i$位时,如果第$i$位为0就跳过

    如果为1,若$b_i$不存在,就把$b_i$赋成$x$并退出,否则让$xhat{} =b_i$以保证$x$的最高位小于$i$

    void insert(long long x){
        for(int i=62;~i;i--){
            if(x&(1ll<<i)){
                if(!a[i]){a[i]=x;return;}
                x^=a[i];
            }
        }
    }

    查询异或最大值:

    把ans赋成0,从高往低扫$b_i$

    若$anshat{} b>ans$,则$anshat{} =b_i$

    long long Max(){
        long long ans=0;
        for(int i=62;~i;i--){
            ans^=(ans&(1ll<<i))?0:a[i];//如果ans第i位不为1就ans^=a[i]
        }
        return ans;
    }

    结构体

    #define LL long long
    struct Base{
        LL a[63];
        void insert(LL x){
            for(int i=62;~i;i--){
                if(x&(1ll<<i)){
                    if(!a[i]){a[i]=x;return;}
                    x^=a[i];
                }
            }
        }
        LL Max(){
            LL ans=0;
            for(int i=62;~i;i--){
                ans^=(ans&(1ll<<i))?0:a[i];
            }
            return ans;
        }
    };
  • 相关阅读:
    Spring dispatcherServlet
    Tomcat tomcat-users.xml详解
    Tomcat server.xml详解
    WAR包
    Tomcat 部署
    Tomcat 使用说明
    Java sun的JDK
    Spring 使用中的设计模式
    缓存插件 EHCache 对象缓存(Spring)
    缓存插件 EHCache 页面缓存CachingFilter
  • 原文地址:https://www.cnblogs.com/bennettz/p/10130886.html
Copyright © 2011-2022 走看看