线性空间和OI中的线性基

线性基求交:是什么以及为什么 这篇文章要讨论的,是有关算法竞赛中的一个主题:线性基。我自己去认识、理解这个问题(指线性基求交),确实花了很大一番功夫。我将梳理我自己的思考认识,包括众多其他博客中所提到的、没提到的方方面面。 目录线性基线性空间线性基的交线性无关线性基的变换线性基求交的方法上述方法的正确性构造B′B'B′的方法上述方法的正确性代码实现 线性基 关于线性基是什么、如何构造线性基,相对比较容易理解,不是本文的重点。可... 阅读详情

下面的所有知识均属线性代数范畴。


基础知识

  • 线性空间

指关于向量加法和标量乘法两个运算封闭的向量集。

  • 表出

如果若干向量 a1,a2,⋯ ,aka_1,a_2,\cdots, a_ka1​,a2​,⋯,ak​,能够通过向量加法和标量乘法生成向量 bbb,即 v1a1+v2a2+⋯vkak=bv_1a_1 + v_2a_2 + \cdots v_ka_k = bv1​a1​+v2​a2​+⋯vk​ak​=b(vvv 为标量),则称向量 bbb 能够被向量 a1,a2,⋯ ,aka_1,a_2,\cdots, a_ka1​,a2​,⋯,ak​ 表出,bbb 也称为向量 a1,a2,⋯ ,aka_1,a_2,\cdots, a_ka1​,a2​,⋯,ak​ 的线性组合。

如果向量 a1,a2,⋯ ,aka_1,a_2,\cdots, a_ka1​,a2​,⋯,ak​ 所有的线性组合构成一个线性空间,那么 a1,a2,⋯ ,aka_1,a_2,\cdots, a_ka1​,a2​,⋯,ak​ 被称为其生成子集。

从空间上看,线性组合是向量 a1,a2,⋯ ,aka_1,a_2,\cdots, a_ka1​,a2​,⋯,ak​ 通过伸缩变换和首尾相接组成的一个新向量 bbb。

  • 张成

线性空间内所有元素的所有线性组合构成的集合称为该线性空间的张成。

空间上看,所有的向量经过任意的伸缩变换可以组成若干个新的向量,它们将构成这些向量的张成。

注意一点:张成空间的维度一定小于等于所有向量组成空间的维度。

  • 线性相关

任选线性空间中的若干个向量,如果其中存在一个向量能够被其它向量表出,则称这些向量线性相关,否则线性无关。

空间上看,如果每次加入一个向量,都会使得整个空间扩展一维,那么这些向量线性无关,否则线性相关。

一个很显然的结论:如果线性空间 VVV 存在子集 V′V'V′ 线性相关,那么 VVV 线性相关;如果线性空间 VVV 的所有子集 V′V'V′ 线性无关,那么 VVV 也线性无关。

  • 基

对于线性空间 VVV,若存在一个线性无关子集 SSS,能够张成 VVV,称 SSS 为 VVV 的基,一般写作 B\mathfrak{B}B。我们一般只讨论其大小有限的情况,此时其大小被称为线性空间 VVV 的维数(从空间角度看,维数实际上就是指基 SSS 形成的空间维数)。

基存在下列性质:

  1. VVV 是 B\mathfrak{B}B 的极小生成子集,只有 B\mathfrak{B}B 能张成 VVV,而它的任何真子集都不张成全部的向量空间 VVV。
  2. B\mathfrak{B}B 是 VVV 中线性无关向量的极大集合,B\mathfrak{B}B 在 VVV 中是线性无关集,同时 VVV 中没有其他线性无关集合包含它作为真子集。
  3. VVV 中所有的向量都可以按唯一的方式表达为 B\mathfrak{B}B 中向量的线性组合。

第三点尤其重要。简单来说,基 B\mathfrak{B}B 就是向量空间中的一个子集,它可以通过唯一的线性组合,来张成向量空间中所有的向量,这样就可以大大的缩小我们向量空间的大小。


如果实在不能理解以上内容,也没有关系,只要您能够看懂下文所引出的概念 “异或空间”,就能够轻松掌握线性基。上文的所有知识只是为您提供一些更为严谨的定义和证明。

线性基

这里重点指 OIOIOI 中的线性基。

OIOIOI 中的线性基是用于处理集合间相互异或的关系的。

它支持如下操作:

  • 插入一个数 valvalval;

  • 查询某个数 valvalval 是否能够被若干个数异或得出;

  • 查询若干个数异或和的 max⁡/min⁡\max/\minmax/min;

  • 查询若干个数异或和的第 kkk 小;

  • ⋯⋯\cdots\cdots⋯⋯

这里先给出一种好想好写却不太严谨但又能够胜任大多数题目要求的构造方式,单次操作的时间复杂度是 O(log⁡2k)O(\log_2 k)O(log2​k) 的。

先看插入:

inline void Insert(LL val)
{
    if(val == 0LL) return Zero = true, void();
    for(register int i = MAXLOG - 1; i >= 0; i--)
    {
        if(val >> i & 1LL)
        {
            if(!Base[i]) { Base[i] = val; break; }
            val ^= Base[i];
		}
    }
    return;
}

可以发现这个构造方法非常巧妙,我们来逐行解析一下。

首先我们要知道线性基是处理不了 000 的情况的,因此对于插入的 000 必须特判。事实上,后面的大多数操作都需要这个特判。

然后我们发现,如果在第 iii 位没有成功插入,要么这一位不存在,要么就是这一位异或上 BaseiBase_iBasei​ 变成了 000,说明这一位上的数可以被原有的数异或出来,那么它就没有在这一位上插入的必要了;如果这个数在第 iii 位成功插入,那么 BaseiBase_iBasei​ 和更高位上的数也可以把这个数异或出来。这说明,原序列中的每一个数都可以被线性基中的数异或出来。

所以,如果第 iii 位上插入没有成功,我们就异或上 BaseiBase_iBasei​,表示更低位的数与这一位上的数异或起来可以得到我们原来要插入的数。正因为如此,我们还可以发现这个数到了第 iii 位时,该数第 iii 位的更高位全为 000,所以代码中的 if(val >> i & 1LL)也可以写成 if(val >> i),它们是等价的。

接下来我们看第二个操作:

inline bool Check(LL val)
{
    if(val == 0LL) return Zero;
    for(register int i = MAXLOG - 1; i >= 0; i--) if(val >> i & 1LL) val ^= Base[i];
    return val == 0LL;
}

其实思想也很简单。首先特判 000 是必不可少的。接下来我们从高到低扫描每一位,把对应的每一位上的数异或到一起。前面证明了,原序列中的每一个数都可以被线性基中的数异或出来。所以,用这种方法扫描下去,只要 valvalval 最后等于 000(即已经被线性基中的数异或出来了),说明 valvalval 是合法的。反之,如果这种方法无法使得 valvalval 最后等于 000,说明 valvalval 不能被线性基中的数异或出来,它是不合法的。

然后是求异或和 max⁡\maxmax,其实也很简单,就是从大到小扫描,贪心地把每一位填满即可:

inline LL Max()
{
    LL res = 0LL;
    for(register int i = MAXLOG - 1; i >= 0; i--) if((res ^ Base[i]) > res) res ^= Base[i];
    return res;
}

异或和 min⁡\minmin 也很简单,从小到大扫描,第一个扫到的数即为答案,注意特判 000 的情况:

inline LL Min()
{
    if(Zero) return 0LL;
    for(register int i = 0; i < MAXLOG; i++) if(Base[i]) return Base[i];
}

求异或和的第 kkk 小稍微麻烦一点,因为我们会发现这样构建出的线性基是不满足一个类似二分的性质的。

所以我们要用到一种更加严谨的构造方法:高斯消元。

不过需要提到一点:高斯消元的单次时间复杂度是 O(log⁡22k)O(\log_2^2 k)O(log22​k) 的。

在此之前,我们先引出一个新的概念:

  • 异或空间

线性空间的推广。异或空间是关于异或运算封闭的整数集合。

类似地,我们也可以定义出异或空间的表出、线性相关和基:

表出:整数 bbb 能够由整数 a1,a2,⋯ ,aka_1,a_2,\cdots, a_ka1​,a2​,⋯,ak​ 异或得出,称 bbb 能够被 a1,a2,⋯ ,aka_1,a_2,\cdots, a_ka1​,a2​,⋯,ak​ 表出,也称 bbb 为 a1,a2,⋯ ,aka_1,a_2,\cdots, a_ka1​,a2​,⋯,ak​ 的线性组合;

同时也线性相关:任选异或空间中的若干个整数,如果其中存在一个整数能够被其它整数表出,则称这些整数线性相关,否则线性无关;

基:对于异或空间 VVV,若存在一个线性无关子集 B\mathfrak{B}B 能够张成 VVV,称 B\mathfrak{B}B 为 VVV 的基,它仍然满足线性空间中基的三条性质。

接下来我们来看看线性基 B\mathfrak{B}B 的构建方式。

考虑一个个加入 AiA_iAi​,保证 B\mathfrak{B}B 线性无关的同时需要保证 AiA_iAi​ 能够被前面加入的 A1,A2,⋯Ai−1A_1, A_2, \cdots A_{i - 1}A1​,A2​,⋯Ai−1​ 表出。

inline void Build()
{
    for(register int i = 1; i <= n; i++)
    {
        if(!a[i]) { Zero = true; continue; }
        for(register int j = MAXLOG - 1; j >= 0; j--)
        {
            if(a[i] >> j & 1LL)
            {
                if(b[j]) a[i] ^= b[j];
                else
                {
                    b[j] = a[i], ++cnt;
                   	for(register int k = j - 1; k >= 0; k--) if(b[k] && (b[j] >> k & 1LL)) b[j] ^= b[k];
                    for(register int k = j + 1; k < MAXLOG; k++) if (b[k] >> j & 1LL) b[k] ^= b[j];
                    break;
				}	
			}
		}
	}
    return;
}

我们发现,这个程序和原来的构造方式有很多相似之处。

如果从线性代数的角度理解,可以发现,在线性基插入的过程中,我们相当于维护了一个上三角矩阵,满足主对角线下方的位置均为 000。

首先我们从大到小枚举 AiA_iAi​ 的每一位,如果这一位上 AiA_iAi​ 为 111 并且矩阵主对角线的该位置已经有数,说明这一位可以被已经插入的数表出,为了维护上三角矩阵的性质,我们需要异或当前的数,使得 AiA_iAi​ 继续往低位搜索的时候,我们可以不必再考虑高位。否则,我们为了能够使线性基中的数表出 AiA_iAi​,就必须把 AiA_iAi​ 放到当前这一位。

唯一不同的是多出了这两行:

for(register int k = j - 1; k >= 0; k--) if(b[k] && (b[j] >> k & 1LL)) b[j] ^= b[k];
for(register int k = j + 1; k < MAXLOG; k++) if (b[k] >> j & 1LL) b[k] ^= b[j];

这两行模拟的正是高斯消元的过程:用下面的行消掉这一行,再用这一行消上面的行。

为什么要这样维护呢?

我们来模拟这样一个过程吧:加入 7,5,2,37, 5, 2, 37,5,2,3 五个数到线性基中。

首先,加入 777 时矩阵是没有任何数的,所以我们直接插入即可:
[111000000] \left [ \begin{matrix} 1&1&1 \\ 0&0&0 \\ 0&0&0 \end{matrix} \right] ⎣⎡​100​100​100​⎦⎤​
此时做高斯消元不会对整个矩阵有任何影响。

然后,加入 555 时,可以发现第 111 行已经被占据了。我们直接异或上这一行的数 777,再进行插入:
[111010000] \left [ \begin{matrix} 1&1&1 \\ 0&1&0 \\ 0&0&0 \end{matrix} \right] ⎣⎡​100​110​100​⎦⎤​
当第 222 行插入时,我们需要做高斯消元,然后矩阵就会变成:
[101010000] \left [ \begin{matrix} 1&0&1 \\ 0&1&0 \\ 0&0&0 \end{matrix} \right] ⎣⎡​100​010​100​⎦⎤​
可以发现,这样异或后,整个矩阵仍然可以张成插入的数,不会有任何影响。

继续插入 222,会发现失败了,因为会被第二行异或为 000,实际上就表示了已有的 7,57,57,5 可以表出 222;

然后插入 333:
[101010001] \left [ \begin{matrix} 1&0&1 \\ 0&1&0 \\ 0&0&1 \end{matrix} \right] ⎣⎡​100​010​101​⎦⎤​
进行消元会有:
[100010001] \left [ \begin{matrix} 1&0&0 \\ 0&1&0 \\ 0&0&1 \end{matrix} \right] ⎣⎡​100​010​001​⎦⎤​
这个时候,我们显然可以发现:这个矩阵已经可以异或出插入的所有数了,同时,它也不能再插入任何数。

相信看到这里,你已经懂得了高斯消元的奥妙了。通俗地讲,高斯消元的作用在于:使每一位上的 111 尽量地放到最低的位置。

我们还可以发现一个显然的性质:设线性基大小为 cntcntcnt,则其张成集的大小为 2cnt−12^{cnt} - 12cnt−1。为什么会减 111?因为我们仍然需要特判 000 的情况。

回到我们的初衷:求异或和的第 kkk 小。我们发现,这样构建出的线性基就可以做二分了:

inline void Transform()	//把线性基中的数拎出来
{
    len = 0;
    for(register int i = 0; i < MAXLOG; i++) p[len++] = b[i];
    return;
}

inline LL Kth(LL k)
{
    if(Zero) --k;
    if(k >= (1LL << cnt)) return -1LL;	//查找失败
    LL res = 0LL;
    for(register int i = 0; i < cnt; i++) if(k >> i & 1LL) res ^= p[i];
	return res;
}

当然,对于这种构造方法,前面的三种操作同样适用。

贴上洛谷模板题代码:(非常作地用求第 2cnt−12^{cnt} - 12cnt−1 小来求最大值)

#include<iostream>
#include<cstdio>
#include<cstdlib>

#define MAXN 50

using LL = long long;
using namespace std;

int n, cnt;
bool Zero;
LL a[MAXN], b[MAXN], p[MAXN];

inline void Build()
{
	for(register int i = 0; i < n; i++)
	{
		if(!a[i]) { Zero = false; continue; }
		for(register int j = MAXN - 1; j >= 0; j--)
		{
			if(a[i] >> j & 1LL)
			{
				if(b[j]) a[i] ^= b[j];
				else
				{
					b[j] = a[i], ++cnt;
					for(register int k = j - 1; k >= 0; k--) if(b[j] >> k & 1LL) b[j] ^= b[k];
					for(register int k = j + 1; k < MAXN; k++) if(b[k] >> j & 1LL) b[k] ^= b[j];
					break;
				}
			}
		}
	}
	int len = 0;
	for(register int j = 0; j < MAXN; j++) if(b[j]) p[len++] = b[j];
	return;
}

inline LL Kth(LL k)
{
	if(Zero) --k;
	if(!k) return 0LL;
	LL res = 0LL;
	for(register int i = 0; i < cnt; i++) if(k >> i & 1LL) res ^= p[i];
	return res;
}

int main()
{
	scanf("%d", &n);
	for(register int i = 0; i < n; i++) scanf("%lld", a + i);
	Build();
	printf("%lld\n", Kth((1LL << cnt) - 1 + Zero));
	return 0;
}

看到这里,你应该已经知道了:线性基的插入操作是基于高斯消元法的。

正因为如此,线性基还有一个作用:求异或方程组解的个数。

  • 例题:

​ 给出若干个形如 xp1xor⁡xp2xor⁡⋯xor⁡xpm=0x_{p_1} \operatorname{xor} x_{p_2} \operatorname{xor} \cdots \operatorname{xor} x_{p_m} = 0xp1​​xorxp2​​xor⋯xorxpm​​=0 的方程,求解的个数。

​ 其中 x1∼nx_{1\sim n}x1∼n​ 为 000 或 111,p1∼mp_{1\sim m}p1∼m​ 是一个长为 mmm 的单调上升序列,满足 ∀i∈[1,m],1≤pi≤n\forall i \in [1, m],1\le p_i\le n∀i∈[1,m],1≤pi​≤n。

答案为 2cnt2^{cnt}2cnt ,其中 cntcntcnt 表示线性基中值为 000 的位置个数。

我们来思考值为 000 的位置代表了什么:

假设这个位置代表的位为 iii,那么每一次插入一个方程时,线性基会通过已有的方程对其进行高斯消元。

如果第 iii 位上的数为 000,说明每一次插入时,xix_ixi​ 都会被已有的方程给消元。换言之,已有的方程通过互相异或,可以消去 xix_ixi​ 这个元。

这样的话,xix_ixi​ 可以取到在值域里的任何值,同时线性基中所有值不为 000 的位置代表的元都会有对应的取值。

根据线性代数的定义,前者叫做自由元,后者叫做主元。

如果清楚高斯消元法的定义,那么可以得知:高斯消元法的解的个数取决于自由元的解的个数,每一组自由元的解都会决定剩下的所有主元的解。

所以答案就呼之欲出了:解的个数即为 2cnt2^{cnt}2cnt,cntcntcnt 为自由元的个数,在线性基中的体现即为值为 000 的位置。


To Be Continued⋯⋯\mathit{To~Be~Continued\cdots\cdots}To Be Continued⋯⋯

【AtCoder】AtCoder Grand Contest 045 比赛链接 点击打开链接 官方题解 点击打开链接 Problem A. Xor Battle 考虑维护使得最后一个玩家获胜的数字集合 SSS ,初始时, S={0}S=\{0\}S={0} 。 考虑最后一个回合 iii : 若该回合是 0 号玩家的回合,则有 S′={x∣x∈S}∪{x⊕Ai∣x∈S}S'=\{x\mid x\in S\}\cup\{x\oplus A_i\mid x\in S\}S′={x∣x∈S}∪{x⊕Ai​∣x∈S} ; 若该回合是 1 号玩家的回合,则若 Ai∈SA_i\in SAi 阅读详情

相关推荐

超详细neo4j安装教程

一、neo4j简介 最近开始学习知识图谱,所以首先想先学习一下neo4j的使用。 Neo4j是一个高性能的,NOSQL图形数据库,它将结构化数据存储在网络上而不是表中。由于知识图谱中存在大量的关系型信息(实体—关系—实体), 使用结构化数据库进行存储将产生大量的冗余存储信息, 因此将图数据库作为知识图谱的存储容器成为流行的选择。当前较为常用的图数据库主要有 Neo4j 等。 二、neo4j的安装 功能快捷键 撤销:Ctrl/Command + Z 重做:Ctrl/Command + Y 加粗:Ctrl/Co

qq_38335648的博客 9万+

OI中的线性基

水平有限,此处只记录一些OI中线性基的思路,基本与线性代数无关了。 定义 线性基一般用于求解异或问题。 对n个数求其线性基,得到最多 二进制下位数m 个数。其满足三个性质: 1. 线性基能相互异或得到原集合的所有相互异或得到的值。 2. 线性基是满足性质1的最小的集合 3. 线性基没有异或和为0的子集。 注意一点,线性基内不一定是原数。 但我们称被成功插入线性基的数为在线性基中...

一位蒟蒻的小博客 510

Windows下用RKDevTool解包update.img的完整流程(含常见错误排查)

本文详细介绍了在Windows系统下使用RKDevTool工具解包update.img固件的完整流程。从工具准备、环境搭建到逐步解包操作,重点解析了输出文件结构,并提供了修改分区后重新打包的实战方法。文章还针对解包失败、打包错误等常见问题提供了详细的排查与解决方案,旨在帮助嵌入式开发者和爱好者高效完成固件分析与定制工作。

aa123的博客 715

线性基学习笔记

线性基学习笔记

Dyc780511的博客 1078

数据湖是什么?有什么优势?与数仓区别?未来的发展?

数据湖是什么?有什么优势?与数仓区别?未来的发展?一、什么是数据湖二、数据湖的发展三、数据湖有哪些优势四、数据湖应该具备哪些能力五、数据湖的实现遇到了哪些问题六、数据湖与数据仓库的区别七、为什么要做数据湖?区别在于?八、数据湖挑战九、湖仓一体十、目前有哪些开源数据湖组件 来源:大数据DT 一、什么是数据湖 数据湖是一种不断演进中、可扩展的大数据存储、处理、分析的基础设施;以数据为导向,实现任意来源、任意速度、任意规模、任意类型数据的全量获取、全量存储、多模式处理与全生命周期管理;并通过与各类外部异构数据

一个写湿的程序猿 9148

5G协议栈逆向工程:基于开源模拟器的核心网信令分析实战

本文详细介绍了基于开源模拟器Free5GC和UERANSIM的5G协议栈逆向工程实战,涵盖核心网信令分析、环境搭建、认证协议解析及安全漏洞验证。通过NGAP/NAS信令交互解密和异常流量注入测试,帮助研究人员深入理解5G网络安全机制,并提供实用的安全加固建议。

weixin_29250573的博客 675

线性基导论

Definition以非负整数集SS中元素为向量,异或为加法,{0,1}\{0,1\} 为数域生成的线性空间V的一组基QQ,满足QQ中二进制下最高非零位为k的向量不存在或唯一,称为SS的线性基。algorithm我们只需要使用Gauss消元求出SS的一个极大线性无关部分组,而这过程中就可以承诺 QQ中二进制下最高非零位为k的向量不存在或唯一 。Application最基础的应用是判断某个非负整数AA

Oi这件小事 1088

生成模型实战 | MuseGAN详解与实现

人工智能音乐生成领域已引起了广泛关注,MuseGAN 是其中一个重要的模型。本节我们将使用 JSB Chorales 数据集来训练 MuseGAN,该数据集包含巴赫创作的四音轨合唱曲。在生成图像时,生成器使用的是来自潜在空间的单一噪声向量来生成不同格式的内容;而在 MuseGAN 中,生成器将使用四个噪声向量来生成一段音乐,旨在增强音乐生成过程中的可控行和多样性。每个噪声向量代表音乐的不同方面,通过单独调整这些向量,模型可以生成更复杂、更细腻的音乐作品。

盼小辉丶的博客 6549

线性基

Linear Basis线性基 子集异或和最大,子集异或和第k小

KirinBill's blog(优快云) 1888

iOS安全和逆向系列教程 第18篇:iOS应用脱壳技术详解与实战

iOS应用脱壳技术详解与实战 摘要: 本文深入剖析了iOS应用脱壳技术,首先解释了加壳(如FairPlay DRM)与脱壳的基本概念及必要性。通过otool命令可以检测应用的加密状态。文章详细介绍了三种主流脱壳工具:经典dumpdecrypted工具的使用方法、现代化Clutch工具的安装配置以及基于Frida的高级脱壳方案frida-ios-dump。针对特殊情况,还提供了使用LLDB手动dump内存的技术细节,包括查找基地址、计算dump范围和内存读取等操作。最后介绍了修复Mach-O文件头的Pytho

一个自学不成材的程序员 710

Unity如何实现3D物体拆解组装

最近有一个需求,是做一个发动机的拆卸和安装功能,其实是一个很简单的功能,但是其中有一个点我觉的非常有意思,就是拖拽组装时,物体如何精准拖到目标位置,思路有了,但是我一直找不到实现方式,早晨刷牙时无意间想到了叉乘,我才有了解决方案。就凭这一次的灵光乍现,也很有必要写篇博客来记录一下。首先,我们先来看下我们要实现的效果,就是对一个发动机(任意多组件物体,如:车)的360°预览查看,手动拖拽拆解,手动拖拽组装。360°旋转视角远近拉伸视角点击拖拽拆卸拖拽组装。

TxNet 1万+

线性基 学习笔记

线性基 学习笔记 学习资料 线性基详解_a_forever_dream的博客-优快云博客 线性基 - OI Wiki (oi-wiki.org) 线性基 线性基(简称基)是线性空间(可以看作 nnn 维向量组成的集合)的一组基底。 何为基底?假如我们的线性空间 Ω={a1,a2,⋯ ,am}\Omega=\{\mathbf a_1,\mathbf a_2,\cdots,\mathbf a_m\}Ω={a1​,a2​,⋯,am​},我们有一个基为 {b1,b2,⋯ ,bk}\{\mathbf b_1,\ma

日居月诸的博客 230

YOLO11检测中的内存占用分析与优化:讲解如何分析并优化推理时的内存使用

YOLOv11模型内存分析与优化摘要:本文系统分析了YOLOv11目标检测模型的内存使用模式,重点探讨了显存(VRAM)、系统内存(RAM)和共享内存的特性差异。通过PyTorch内置工具和自定义分析器,详细剖析了骨干网络、颈部网络和检测头各组件内存占用规律,指出激活值内存与输入尺寸呈平方级增长关系。文章提供了卷积层内存计算公式,并强调合理规划"工作台"(显存)与"仓库"(内存)间的数据流动是优化关键。最后通过流程图直观展示了YOLOv11推理过程的三类内存使用模式,

本博客聚焦 YOLOv11 全流程落地,涵盖架构优化、数据集处理、训练技巧与多场景部署,兼及国产数据库、Java 开发与 AI 模型应用,内容兼顾理论与工程实践,为开发者提供系统干货,助力高效提升技术能力。 343

关于线性基的学习

哎,好久没有写博客了呢。。。 以下内容可能引起肠胃不适,请三思后食用。。。。。。 一些基本的线代概念: 矢量(向量):矢量(vector)是一种既有大小又有方向的量,又称为向量。一般来说,在物理学中称作矢量,例如速度、加速度、力等等就是这样的量。舍弃实际含义,就抽象为数学中的概念──向量。在计算机中,矢量图可以无限放大永不变形。 向量空间:向量空间又称线性空间,是线性代数的中心内容和...

weixin_33781606的博客 179

android 蓝牙通讯demo

android 下蓝牙通讯demo,实现了发现蓝牙,使能蓝牙,通过蓝牙发送消息。

jdk-8u144-linux-x64.tar.gz.

该资源为搭建Linux系统Java环境用,资源的后缀为tar.gz格式的压缩包

线性基求交与求并

(明天更新详细讲解) 明显答案也是一个线性基。 重要的是如下公式: 如果βi\beta_iβi​能被{αi}\{\alpha_i\}{αi​}与βj=1→i−1\beta_{j = 1 \to i - 1}βj=1→i−1​线性表示出来, 我们可以把{αi}\{\alpha_i\}{αi​}或者βj=1→i−1\beta_{j = 1 \to i - 1}βj=1→i−1​加入线性基中。 详细证明...

Demon_Rieman的博客 4554

efm32 入门.pdf

本PDF共计22页,介绍的是操作驱动API,下载与否自己斟酌。

OI中的线性代数

##矩阵与矩阵的基本运算 定义: 行向量:矩阵的某一行所形成的向量。 列向量:矩阵的某一列所形成的向量。 线性组合与基底: 加法运算 减法运算 转置 矩阵乘法 矩阵乘法的分配律 A(B+C)=AB+AC (B+C)A=BA+CA 矩阵乘法的结合律 ABC=A(BC) 不满足交换律 单位矩阵 逆矩阵 行列式定义 ...

Destiny 1037

老版QQ原生表情gif动态

这是老版的QQ表情,不过全是动态的的,Windows照片查看器是不会动的,可以右击用浏览器打开查看,再说一遍是老版的,只是分享给宁愿用老版也要动态的人。

线性基基础

介绍 基是线性代数中的一个概念,而在现行OI中,通常利用基在异或空间的一些特殊性质来解决问题,而这类问题涉及的知识被称为【线性基】 异或运算下的基: 对于数 $a_0, a_1,..., a_n$ 将 $a_i$ 的二进制表示成 $(b_0,b_1,...b_n)_2$ 可看作一个向量,异或运算下的基就是 $(a_0, a_1, ... a_n)$ 中的极大线性无关组。 设 $V...

dianshu1593的博客 267

XOR HDU - 3949(线性基/高斯消元/异或第k大) ACWING210. 异或运算

给定你由N个整数构成的整数序列,你可以从中选取一些(甚至一个)进行异或(XOR)运算,从而得到很多不同的结果。 请问,所有能得到的不同的结果中第k小的结果是多少。 输入格式 第一行包含整数T,表示共有T组测试数据。 对于每组测试数据,第一行包含整数N。 第二行包含N个整数(均在1至1018之间),表示完整的整数序列。 第三行包含整数Q,表示询问的次数。 第四行包含Q个整数k1,k2,…,kQ,表示...

tomjobs的博客 809

【学习笔记】线性基求交

原来机房诸位都是卷神

cqbzlydd的博客 775

【学习笔记】线性代数全家桶(在编程竞赛中的应用)

两万字的算法竞赛线性代数全家桶!!! OI / ACM均可食用,味美价廉

繁凡さん的博客 5582

通过有限的基向量来描述无限的三维空间

称线性空间VVV的一个极大线性无关组为VVV的一组Hamel 基或线性基,简称基。规定线性空间θ\{\theta\}θ的基为空集。可以证明任意线性空间均存在线性基1,我们定义线性空间VVV的维数为线性基的元素个数(或势),记作dim⁡V\dim VdimV。

lry421308的博客 368

OI数学小记

数论 积性函数的筛法 整除和同余相关理论 多项式 多项式全家桶 组合数学 斯特林的试炼 博弈论 博弈论之SG函数 线性代数 线性空间和OI中的线性基 杂项 注:每篇文章中的内容不一定属于同一个范畴,但是思想和作用相似。 函数与表达式的反演变换 To Be Continued⋯⋯\mathit{To~Be~Continued\cdots\cdots}To Be Continued⋯⋯ ...

Recalling_Clouds的博客 199

【学习笔记】AGC045

这波是变成纯纯的抄题解了。哎没办法,最近考试考麻了,也没精力认真想题了

cqbzlydd的博客 383

NOIP2018游记

好久没写博客啦,本来还想考完之后把刷题记录传个档,结果一天假期都在补番,只能写一写游记了。 D0 又回到XJ了,每次来都是考试啊。回酒店先颓废了一会儿,然后写了写扫描线excrt还有一些零零碎碎的板子,最后着重看了看欧拉回路和kmp……睡前例行看知乎,十一点睡下居然又醒到午夜。早上五点醒了,以为在做梦,又睡过去。 D1 解压密码很应景啊。吐槽一下XJ真的好冷。T1是一眼题吧,分治的思想之前在一道区...

二三两 437
上一篇: 博弈论之SG函数
下一篇: 多项式全家桶
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值