首页 > 其他分享 >线性基学习笔记

线性基学习笔记

时间:2024-02-23 22:25:15浏览次数:19  
标签:返祖 long 高斯消 学习 异或 笔记 线性 向量

线性基

preface

需要一点线性空间知识

  1. 线性相关:在向量空间V的一组向量\(A:a_1,a_2...a_m\) 如果存在不全为零的数 \(k_1, k_2, ···,k_m\) , 使\(\sum a_ik_i=0\)则称向量组A是线性相关的,否则线性无关
  2. 线性表出:在向量空间V的一组向量\(A:a_1,a_2...a_m\) 如果存在一组实数 \(k_1, k_2, ···,k_m\) , 使\(\sum a_ik_i=b\),那么称b能被A线性表出

还有通俗的线性基的定义(其实线性基就是极大线性无关组,就是矩阵的秩)

  1. 线性基能相互异或得到原集合的所有相互异或得到的值。
  2. 线性基是满足性质1的最小的集合
  3. 线性基没有异或和为0的子集。

贪心法&高斯消元

异或线性基

二进制下拆分数x,从高位向低位扫

若x再当前位为1,就判断当前位线性基是否有值,若有就把x的当前位消掉,否则就加入线性基

询问最大值时,直接从大往小扫一遍,若变大就更新

最小值就判断是否能为0,否则就输出线性基中最小值

void add(long long x){
	Fd(i,63,0) if((x>>i)&1){
		if(d[i]) x^=d[i];
		else{ d[i]=x;break; }
	}
}
long long ask(long long x){
	Fd(i,63,0) if((x^d[i])>x) x=x^d[i];
	return x;
}

实数线性基

和异或差不多,就是消掉当前位的操作要用高斯消元

例题

P4151 [WC2011] 最大XOR和路径

求1到n的最大XOR路径

我们考虑把路径拆成若干环和链,假如我们先选择了一个1到n的链,我们可以找一个环拓展,具体来说,就是通过一条链到环,再遍历一遍环,再从链回来,于是发现链走了两次,就等价于只走了一个环

所以就是找到全部环(其实就是返祖边对应的环),放进线性基里,然后随便找个1到n的链询问

什么是对的?

  1. 随便的链如果不优,一定会被某个环更新
  2. 返祖边对应的环,通过一些重集可以搞出全部的环

标签:返祖,long,高斯消,学习,异或,笔记,线性,向量
From: https://www.cnblogs.com/zhy114514/p/18028178

相关文章

  • 代表元学习笔记
    代表元概念网络上没有明确的定义,只能在少量博客中找到一些信息大概是处理一类会算重的统计问题,在每个算重的集合中选出一个代表来统计以去重,就是代表元例子代表元只能说是一种思想,用于问题的转化与化简森林连通块数量可以用点数-边数快速计算但有些时候不好维护,于是我们考......
  • FWT学习笔记
    FWT/快速沃尔什变换前言FWT是处理一类问题形如(\(\oplus\)指or,and,xor二元运算符)\[c_{i}=\sum_{i=j\oplusk}a_{j}b_{k}\]考虑像FFT一样,用\(O(n\logn)\)的复杂度构造出\(fwt\),在\(O(n)\)计算出\(fwt_a\timesfwt_b\),最后在\(O(n\logn)\)将\(fwt\)转化回去正题OR考虑构......
  • Edu-English-Phonetic-IPA:国际音标发音学:英语音标的学习神器,终于找到
    https://mp.weixin.qq.com/s?__biz=MzU3NTIzOTA5OA==&mid=2247493736&idx=1&sn=8ed10241adeaa148ee3053f5db94214e&chksm=fd248ebdca5307abf32a39eed20bb83818e00692a87298d3b1c2d2cb7b2d6572df0c0301fe7d&scene=27英语音标的学习神器,终于找到音标是记录语言的符号,对音标的正确......
  • 如何学习PYTHON(python和c++哪个难学)
    1.如何学习PYTHONPython是一门简单易学的编程语言,但想要真正掌握它需要花费不少时间和精力。我的建议是先从Python基础开始学习,掌握基本语法和常见数据结构,再逐步深入学习高级特性和应用场景。 在学习Python的过程中,https://www.fuligou8.com/noking/4006.html我们可以通过阅......
  • C语言学习方法
    学习C语言是许多编程初学者的首选,https://www.fuligou8.com/noking/22013.html因为它是一种强大且广泛使用的编程语言。然而,对于那些刚开始学习C语言的人来说,掌握它可能会有一定的挑战。在本文中,我将分享一些学习C语言的方法,帮助你更轻松地掌握这门编程语言。  1.基础知识的......
  • 【学习笔记】 - 基础数据结构 :Link-Cut Tree
    发现树剖代码太长了,给我恶心坏了学个代码短点的能写树剖题的数据结构吧前置知识平衡树splay树链剖分简介以及优缺点介绍Link-CutTree,也就是LCT,一般用于解决动态树问题Link-CutTree可用于实现重链剖分的绝大多数问题,复杂度为\(O(n\logn)\),看起来比树剖的\(O(n\lo......
  • python 加密 变量 (可用于深度学习模型加密)
    需求:深度学习基于pytorch,模型需要加密。查看到网上有使用cryptography加密的方法,如https://blog.csdn.net/weixin_43508499/article/details/124390983,总体思路是调用torch的save函数将模型保存为io.BytesIO,然后使用cryptography将保存为io.BytesIO的字节进行加密,解密......
  • 第7章 程序在何种环境中运行的 笔记
    硬件环境是程序运行的基础。它包括处理器、内存、硬盘、显示器等硬件设备。这些设备为程序的运行提供了基本的物理支持。例如,处理器负责执行程序的指令,内存则负责存储程序的数据。没有这些硬件设备,程序就无法运行。操作系统环境是程序运行的平台。操作系统是一种特殊的软件,它管理......
  • 第4章 控制方法 笔记
    控制方法是一种特殊的系统方法,它强调通过调节系统的行为和性能来达到预期的目标。这种方法的核心是反馈机制,即通过收集系统的输出信息,并将其与预期目标进行比较,然后根据差异来调整系统的输入,从而实现系统的稳定和优化。在阅读过程中,我深入了解了控制方法的具体步骤和技巧。这些包......
  • markdown学习
    Markdown学习二级标题三级标题四级标题字体hellowordhellowordhellowordhelloword引用选择狂神分割线图片超链接[点击跳转哔哩哔哩][https://www.bilibili.com/video/BV12J41137hu/?p=6&spm_id_from=pageDriver&vd_source=93e3a3e5b46479942c347265d2421476]......