线性基的一些基础模版
大神博客: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
线性基的一些基础模版相关推荐
- HDU3949(线性基算法模版)
题意:给出N个数,再给出q次查询,每一次的查询在N个数中的值进行异或后第k小的值是多少! 这个线性基我也今天刚学,也只是在套模版,有些地方感觉有点难理解! #include<iostream&g ...
- 【基础操作】线性基详解
线性基是一个奇妙的集合(我摘的原话) 这里以非 $OI$ 的角度介绍了线性基 基础部分 模板题 给你 $n$ 个数的集合,让你选出任意多个不重复的数,使得它们的异或和最大. 线性基是什么 我们称集合 ...
- 线性代数 —— 线性基与前缀线性基
[概述] 线性基,是线性代数中的概念,在信息学竞赛中,前缀线性基是线性基的扩展,他们主要用于处理有关异或和的极值问题. 一组线性无关的向量即可作为一组基底,张起一个线性的向量空间,这个基底即称为线性基 ...
- hdu 6579 Operation (在线线性基)
传送门 •题意 一个数组a有n个数 m个操作 操作① 询问$[l,r]$区间的异或值 操作② 在数组末尾追加一个数x,数组长度变为$n+1$ 其中$l,r$不直接给出,其中$l=l%n+1,r=r%n ...
- 『线性空间 整数线性基和异或线性基』
线性空间 定义 线性空间是一个关于一下两个运算封闭的向量集合: \(1.\)向量加法\(a+b\),其中\(a,b\)为向量 \(2.\)标量乘法\(k*a\),其中\(a\)为向量,\(k\)为常数 ...
- 牛客练习赛26 D xor序列 (线性基)
链接:https://ac.nowcoder.com/acm/contest/180/D 来源:牛客网 xor序列 时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 262144K,其他 ...
- BZOJ 2844 | HYSBZ - 2844albus就是要第一个出场——线性基
[题目描述] BZOJ 2844 | HYSBZ - 2844albus [题目分析] 题目的意思大概是给一个数列,他有2n个子集,每个子集的元素的异或和构成新的一个数列,排序后问数字Q在这个序列里面 ...
- 【BZOJ4568】幸运数字,树链剖分/倍增+维护线性基
Time:2016.09.06 Author:xiaoyimi 转载注明出处谢谢 传送门 思路: 对于两个线性基数组a,b,直接向b中加a的元素进行线性基合并就可以了 复杂度O(P2)O(P^2)其中 ...
- hdu3949(线性基,求第k小的异或和
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=3949 XOR Time Limit: 2000/1000 MS (Java/Others) Me ...
最新文章
- kernel: make tags 时的告警修改
- python爬虫教程视频-python爬虫(入门教程、视频教程)
- php 启动服务器监听
- Mingw-W64编译Windows程序提示:undefined reference to `__imp_GetStockObject' 的解决方法
- 解决远程登陆Linux误按ctrl+s锁屏
- IDEA连接mysql出现时区错误_idea连接数据库时区错误
- 安卓手机软件开发_无代码手机app软件开发,让人人都是专业开发工程师
- godaddy修改php版本,Godaddy美国主机Plesk面板修改PHP版本教程
- IOS UISwitch 组件的使用
- LeetCode-145:二叉树的后序遍历
- Power Designer逆向操作(从mysql5.0生成数据库的物理模型)
- java解析document_java 值Document解析xml详细介绍
- Softmax Derivation
- Spring拦截器和过滤器的区别及详解
- 【图像分割】基于matlab最大类间方差法(otsu)图像分割【含Matlab源码 121期】
- 戴德金--连续性和无理数--我自己做的中文翻译第4页
- 卡内基梅隆大学计算机博士申请,2020年卡内基梅隆大学博士申请流程
- Vue最常见的面试题以及答案
- no-repeat失效
- 组合导航(二):导航参考坐标系
热门文章
- Vue项目中关闭Eslint
- Error:express-session deprecated undefined resave option; provide resave option app.js:17:10
- sublime配置java编译运行环境(亲测有效)
- 为什么有人宁愿每年买一部千元机,也不愿一次买部高端机?
- 生宣、熟宣、半生半熟宣纸各有什么特点?初学书法用哪种宣纸好?
- 每天快走一小时,身体会有什么变化?
- 产品,是解决问题的载体
- 做生意,没亏过钱,自然也没赚过钱
- The only difference is that they are written
- CodeBlocks配色方案设置(简单易懂)