大神博客:https://blog.csdn.net/a_forever_dream/article/details/83654397

线性基三大性质

1.原序列里面的任意一个数都可以由线性基里面的一些数异或得到

2.线性基里面的任意一些数异或起来都不能得到0

3.线性基里面的数的个数唯一,并且在保持性质一的前提下,数的个数是最少的

插入操作:

void add(ll x)
{for(int i=50;i>=0;i--){if(x&(1ll<<i))//注意,如果i大于31,前面的1的后面一定要加ll
        {if(d[i])x^=d[i];else{d[i]=x;break;//记得如果插入成功一定要退出.
            }}}//插入失败
}

求最大值:

完整的说,是如何求在一个序列中,取若干个数,使得它们的异或和最大。
首先构造出这个序列的线性基,然后从线性基的最高位开始,假如当前的答案异或线性基的这个元素可以变得更大,那么就异或它,答案的初值为0

要优先使最高位尽可能大

ll getmax()
{ll anss=0;for(int i=50;i>=0;i--)//记得从线性基的最高位开始if((anss^d[i])>anss)anss^=d[i];return anss;
}

求第k小的值

void work()//处理线性基
{for(int i=1;i<=60;i++)for(int j=1;j<=i;j++)if(d[i]&(1<<(j-1)))d[i]^=d[j-1];
}
ll k_th(ll k)
{if(k==1&&tot<n)return 0;//特判一下,假如k=1,并且原来的序列可以异或出0,就要返回0,tot表示线性基中的元素个数,n表示序列长度if(tot<n)k--;//类似上面,去掉0的情况,因为线性基中只能异或出不为0的解
    work();ll ans=0;for(int i=0;i<=60;i++)if(d[i]!=0){if(k%2==1)ans^=d[i];k/=2;}return ans;
}

转载于:https://www.cnblogs.com/smallhester/p/11415311.html

线性基的一些基础模版相关推荐

  1. HDU3949(线性基算法模版)

    题意:给出N个数,再给出q次查询,每一次的查询在N个数中的值进行异或后第k小的值是多少! 这个线性基我也今天刚学,也只是在套模版,有些地方感觉有点难理解! #include<iostream&g ...

  2. 【基础操作】线性基详解

    线性基是一个奇妙的集合(我摘的原话) 这里以非 $OI$ 的角度介绍了线性基 基础部分 模板题 给你 $n$ 个数的集合,让你选出任意多个不重复的数,使得它们的异或和最大. 线性基是什么 我们称集合 ...

  3. 线性代数 —— 线性基与前缀线性基

    [概述] 线性基,是线性代数中的概念,在信息学竞赛中,前缀线性基是线性基的扩展,他们主要用于处理有关异或和的极值问题. 一组线性无关的向量即可作为一组基底,张起一个线性的向量空间,这个基底即称为线性基 ...

  4. hdu 6579 Operation (在线线性基)

    传送门 •题意 一个数组a有n个数 m个操作 操作① 询问$[l,r]$区间的异或值 操作② 在数组末尾追加一个数x,数组长度变为$n+1$ 其中$l,r$不直接给出,其中$l=l%n+1,r=r%n ...

  5. 『线性空间 整数线性基和异或线性基』

    线性空间 定义 线性空间是一个关于一下两个运算封闭的向量集合: \(1.\)向量加法\(a+b\),其中\(a,b\)为向量 \(2.\)标量乘法\(k*a\),其中\(a\)为向量,\(k\)为常数 ...

  6. 牛客练习赛26 D xor序列 (线性基)

    链接:https://ac.nowcoder.com/acm/contest/180/D 来源:牛客网 xor序列 时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 262144K,其他 ...

  7. BZOJ 2844 | HYSBZ - 2844albus就是要第一个出场——线性基

    [题目描述] BZOJ 2844 | HYSBZ - 2844albus [题目分析] 题目的意思大概是给一个数列,他有2n个子集,每个子集的元素的异或和构成新的一个数列,排序后问数字Q在这个序列里面 ...

  8. 【BZOJ4568】幸运数字,树链剖分/倍增+维护线性基

    Time:2016.09.06 Author:xiaoyimi 转载注明出处谢谢 传送门 思路: 对于两个线性基数组a,b,直接向b中加a的元素进行线性基合并就可以了 复杂度O(P2)O(P^2)其中 ...

  9. hdu3949(线性基,求第k小的异或和

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=3949 XOR Time Limit: 2000/1000 MS (Java/Others)    Me ...

最新文章

  1. kernel: make tags 时的告警修改
  2. python爬虫教程视频-python爬虫(入门教程、视频教程)
  3. php 启动服务器监听
  4. Mingw-W64编译Windows程序提示:undefined reference to `__imp_GetStockObject' 的解决方法
  5. 解决远程登陆Linux误按ctrl+s锁屏
  6. IDEA连接mysql出现时区错误_idea连接数据库时区错误
  7. 安卓手机软件开发_无代码手机app软件开发,让人人都是专业开发工程师
  8. godaddy修改php版本,Godaddy美国主机Plesk面板修改PHP版本教程
  9. IOS UISwitch 组件的使用
  10. LeetCode-145:二叉树的后序遍历
  11. Power Designer逆向操作(从mysql5.0生成数据库的物理模型)
  12. java解析document_java 值Document解析xml详细介绍
  13. Softmax Derivation
  14. Spring拦截器和过滤器的区别及详解
  15. 【图像分割】基于matlab最大类间方差法(otsu)图像分割【含Matlab源码 121期】
  16. 戴德金--连续性和无理数--我自己做的中文翻译第4页
  17. 卡内基梅隆大学计算机博士申请,2020年卡内基梅隆大学博士申请流程
  18. Vue最常见的面试题以及答案
  19. no-repeat失效
  20. 组合导航(二):导航参考坐标系

热门文章

  1. Vue项目中关闭Eslint
  2. Error:express-session deprecated undefined resave option; provide resave option app.js:17:10
  3. sublime配置java编译运行环境(亲测有效)
  4. 为什么有人宁愿每年买一部千元机,也不愿一次买部高端机?
  5. 生宣、熟宣、半生半熟宣纸各有什么特点?初学书法用哪种宣纸好?
  6. 每天快走一小时,身体会有什么变化?
  7. 产品,是解决问题的载体
  8. 做生意,没亏过钱,自然也没赚过钱
  9. The only difference is that they are written
  10. CodeBlocks配色方案设置(简单易懂)