线性基模板

标签: 线性基模板
12人阅读 评论(0) 收藏 举报
分类:
struct L_B{
    long long d[61],p[61];
    int cnt;
    L_B()
    {
        memset(d,0,sizeof(d));
        memset(p,0,sizeof(p));
        cnt=0;
    }
    bool insert(long long val)
    {
        for (int i=60;i>=0;i--)
            if (val&(1LL<<i))
            {
                if (!d[i])
                {
                    d[i]=val;
                    break;
                }
                val^=d[i];
            }
        return val>0;
    }
    long long query_max()
    {
        long long ret=0;
        for (int i=60;i>=0;i--)
            if ((ret^d[i])>ret)
                ret^=d[i];
        return ret;
    }
    long long query_min()
    {
        for (int i=0;i<=60;i++)
            if (d[i])
                return d[i];
        return 0;
    }
    void rebuild()
    {
        for (int i=60;i>=0;i--)
            for (int j=i-1;j>=0;j--)
                if (d[i]&(1LL<<j))
                    d[i]^=d[j];
        for (int i=0;i<=60;i++)
            if (d[i])
                p[cnt++]=d[i];
    }
    long long kthquery(long long k)
    {
        int ret=0;
        if (k>=(1LL<<cnt))
            return -1;
        for (int i=60;i>=0;i--)
            if (k&(1LL<<i))
                ret^=p[i];
        return ret;
    }
}
L_B merge(const L_B &n1,const L_B &n2)
{
    L_B ret=n1;
    for (int i=60;i>=0;i--)
        if (n2.d[i])
            ret.insert(n2.d[i]);
    return ret;
}

线性基blog:

https://blog.csdn.net/qaq__qaq/article/details/53812883

查看评论

[学习笔记]线性基

线性基
  • QAQ__QAQ
  • QAQ__QAQ
  • 2016年12月22日 13:05
  • 4665

线性基 模板 bzoj2460 【BeiJing2011】 元素

题目大意: 有许多矿石,矿石有编号和价值两种属性,我们要求一个集合,使得该集合任意子集编号异或和不为0,并且要求价值和尽量大。题目分析: 先科普线性基。 线性基是我们构造出一个集合,这个集合中的...
  • Todobe
  • Todobe
  • 2017年05月01日 18:56
  • 291

线性基

很早就学过了线性基,但是一直不知道原理(虽然现在也不知道),也不知道应该怎么用。。。 今天问了一下TA爷,稍微明白了一点。 线性基是一个可以用来看一个数是否能用一个集合的子集通过抑或得到。 首先...
  • FZHvampire
  • FZHvampire
  • 2016年03月14日 21:04
  • 1231

线性基 bzoj2115 [Wc2011] Xor

传送门:点击打开链接 先来谈谈我对线性基的认识把,这似乎线代里叫做最大无关组。 高中的时候老师讲二维向量的时候,我们就知道,如果我们有三个互不平行的向量i,j,k,那么我们在这3个向量前面乘以系数,就...
  • qwb492859377
  • qwb492859377
  • 2016年10月26日 23:25
  • 677

[模板]线性基

模板第四弹难度较大,请勿弃疗给定n个整数(数字可能重复),求在这些数中选取任意个,使得他们的异或和最大。 n...
  • hhuhao
  • hhuhao
  • 2017年07月22日 09:50
  • 113

【SCOI2016】幸运数字 题解 + 线性基介绍

转载自Akakii的博客 题目大意给一棵含有NN个结点的树,每个点有一个权值GiG_i。给QQ个询问(u,v)(u,v),求uu->vv路径上,选出一些点,使得他们权值的异或值最大,求最大异或值。Da...
  • rzO_KQP_Orz
  • rzO_KQP_Orz
  • 2017年01月14日 21:56
  • 321

[模板] 线性基

题目描述: 给定n个整数(数字可能重复),求在这些数中选取任意个,使得他们的异或和最大。 题目分析: 线性基模板可解决 将N个整数看做集合A 线性基即为集合A的子集 线性基中每个元素...
  • qq_35914587
  • qq_35914587
  • 2018年03月31日 08:38
  • 16

[BZOJ4184]shallot(线段树+线性基)

hxy:让高一的知道他们有多吵,他们有多烦!!!!
  • FromATP
  • FromATP
  • 2017年06月11日 18:54
  • 493

【HDU3949】XOR 线性基

题意:给若干个数让你异或,然后询问第k大的异或和。 题解: 先搞出来线性基,然后第k大的异或和就是: 把k二进制拆分,第i位上有1,就把第i个线性基异或进来。 原因: 因为线性基是一堆高位上的1(...
  • Vmurder
  • Vmurder
  • 2015年02月03日 13:18
  • 4168

BZOJ4568 SCOI2016 幸运数字 倍增的思想维护线性基(线性基详解)

题目大意给你一颗NN个节点的树,每个节点都有一个权值AiA_i,现在有MM组询问,每组询问有3个数u,v,u,v,,要求你输出在树上节点uu到节点vv的路径上,每个节点的权值可以选或不选,求选出的点的...
  • YxuanwKeith
  • YxuanwKeith
  • 2016年07月15日 22:44
  • 1454
    个人资料
    持之以恒
    等级:
    访问量: 5万+
    积分: 2743
    排名: 1万+
    最新评论