线性

luogu3812 【模板】线性基

爷,独闯天下 提交于 2019-11-29 20:48:31
Code: #include <cstdio> #include <algorithm> #define ll long long #define N 64 #define setIO(s) freopen(s".in","r",stdin) using namespace std; ll d[N]; void insert(ll x) { for(int i=51;i>=0;--i) { if(x&((ll)1<<i)) { if(d[i]) x^=d[i]; else { d[i]=x; break; } } } } ll qmax() { ll x=0; for(int i=51;i>=0;--i) { if(d[i]) { if((x^d[i])>x) x^=d[i]; } } return x; } int main() { // setIO("input"); int n,i,j; scanf("%d",&n); for(i=1;i<=n;++i) { ll a; scanf("%lld",&a),insert(a); } printf("%lld\n",qmax()); return 0; }    来源: https://www.cnblogs.com/guangheli/p/11531552.html

线性代数PDF

随声附和 提交于 2019-11-29 10:52:56
线性代数是数学的一个分支,它的研究对象是 向量 , 向量空间 (或称线性空间), 线性变换 和有限维的 线性方程组 。向量空间是 现代数学 的一个重要课题;因而,线性代数被广泛地应用于 抽象代数 和 泛函分析 中;通过解析几何,线性代数得以被具体表示。线性代数的理论已被泛化为算子理论。由于科学研究中的 非 线性模型 通常可以被近似为 线性模型 ,使得线性代数被广泛地应用于自然科学和社会科学中。 如下: https://pan.baidu.com/s/1awdGJmkpoFlymseICD_zRA 来源: CSDN 作者: xi邮lj 链接: https://blog.csdn.net/lj121829/article/details/100129069

线性代数的直观理解 -- Intuition in Linear Algebra

北慕城南 提交于 2019-11-29 10:47:56
受《理解线性代数》启发,结合自身学习的经验,直观的总结我对线性代数的理解。强调直观是因为在这里不纠缠于数学的严谨性,所以如果追求数学严谨性和证明的还是去看教材比较好。 统计的目标是对数表内各种数据进行挖掘从而找出隐含其中的关系,线性代数为统计提供了对数表的表达方式和对数表进行处理的工具。 在初等数学中我们学过函数,用来表示的数据之间一种确定的关系,给定x一定能算出唯一的y。但现实中我们遇到的数据可就没有那么明确的联系了,我们不知道谁和谁有联系,甚至不知道是不是存在联系。因此我们急需一种框架来帮助我们处理这些”不好看”的数据。统计就是为了处理数据而生的,它的目标即挖掘出数据之间的联系,从而抽象出数学模型来做解释或预测。 先来扯句题外话,我们知道数学的本质是抽象。那究竟什么是抽象?抽象就是从不同个体中找相同,这些相同也就是规律和关系。初等数学中学到的函数关系就是一种规律,无论x到底是什么值,它和y之间都存在这样的规律。这也是为什么说数学模型都是错的,但却是有用的原因。抽象忽略了个体差异,只留相同点,利用相同点我们能处理满足此相同点的任何差异个体。 言归正传。回忆下中学解析几何或者大学微积分时我们是如何处理数据的: 我们会把函数f(x)映射到欧几里得空间内笛卡尔坐标系做visualization。在代数上对函数的操作等价于对欧几里得空间中相应函数图像做操作。函数是确定的关系

算法:线性查找(重点isFlag标志)

筅森魡賤 提交于 2019-11-29 05:10:18
package com.atguigu;public class Main { public static void main(String[] args) { String[] arr=new String[]{"JJ","DD","MM","BB","GG","AA"}; //线性查找 String dest="BB"; boolean isFlag=true; for(int i=0;i<arr.length;i++){ if(dest.equals(arr[i])){ System.out.println("找到指定的元素,位置为:"+i); isFlag=false; break; } } if(isFlag){ System.out.println("很遗憾,没有找到奥"); } }} 来源: https://www.cnblogs.com/helloworld0903/p/11456502.html

P4570 [BJWC2011]元素 (线性基)

扶醉桌前 提交于 2019-11-28 23:09:41
题意:n个石头 每个石头有a,b两个属性    要求选出一些石头使得没有一个子集的a属性xor和为0 且b属性和最大 题解:线性基例题了.. 好像需要理解一些性质    1.原序列里任一数都可有由线性基xor得到    2.线性基里的数是线性无关的 及没有一个子集xor和为0 (就刚好满足题意了    3.线性基在保证性质1的前提下 数的大小是最少的       于是这个题就把b属性从大到小排序 贪心的如果这个数能插进去就算上贡献    如果某个数插入不进来 那么说明他和之前的插入进来的数 线性相关了 那么之前的数都比他大 那么肯定要前面的数    然后也不会有先插入了一个大的数A 导致较小的两个B,C插入不进来 但B+C的b属性大于A和A后面选的 这种情况    假如这样的话 说明A可以由 B,C这种情况给线性表示 那么你显然可以去掉B,C里面一个与A线性相关的点 然后把A放进来    这样构成一个线性基肯定更优 所以大的数能插就插进来 #include <bits/stdc++.h> using namespace std; typedef long long ll; struct node{ ll a; int b; }e[1005]; bool cmp(node A, node B) { return A.b > B.b; } ll val[70]; int main()

LOJ #113. 最大异或和 (线性基)

六月ゝ 毕业季﹏ 提交于 2019-11-28 19:43:32
题目链接: #113. 最大异或和 题目描述 这是一道模板题。 给由 \(n\) 个数组成的一个可重集 \(S\) ,每次给定一个数 \(k\) ,求一个集合 \(T \subseteq S\) ,使得集合 \(T\) 在 \(S\) 的所有非空子集的不同的异或和中,其异或和 \(T_1\ xor\ T_2\ xor\ ... \ xor\ T_{|T|}\) 是第 \(k\) 小的。 输入格式 第一行一个数 \(n\) 。 第二行 \(n\) 个数,表示集合 \(S\) 。 第三行一个数 \(m\) ,表示询问次数。 第四行 \(m\) 个数,表示每一次询问的 \(k\) 。 输出格式 输出 \(m\) 行,对应每一次询问的答案,第 \(k\) 小的异或和。如果集合 \(S\) 的所有非空子集中,不同的异或和数量不足 \(k\) ,输出 \(-1\) 。 样例 样例输入 3 1 2 3 5 1 2 3 4 5 样例输出 0 1 2 3 -1 数据范围与提示 \(1\le n,m\le 10^5, 0\le S_i\le 2^{50}\) 题解 线性基 贪心 线性基模板题。 #include <bits/stdc++.h> using namespace std; typedef long long ll; using ll = long long; const int maxn

线性基的一些基础模版

左心房为你撑大大i 提交于 2019-11-28 16:22:57
大神博客: 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<