线性基求交

news/2024/11/17 16:43:04/文章来源:https://www.cnblogs.com/spdarkle/p/18550708

定义线性空间 \(V_i\) 的基底为 \(B_i\),现在我们希望求出 \(V_1\cap V_2\) 的基底 \(W\)

  • 引理:令 \(T=V_1\cap B_2\),若 \(B_1\cup(B_2/T)\) 线性无关,则 \(T\) 是所求的 \(W\) 之一。

    证明:考虑反面证明,若 \(T\) 非法则线性有关,设 \(v\in V_1\cap V_2\) 且不能被 \(T\) 表出。

    那么有 \(v=x\oplus y,x\in T,y\in B_2/T\),且 \(y>0\)

    因为 \(x\in T\implies x\in V_1\),同时 \(v\in V_1\),所以 \(x\oplus v=y\in V_1\)

    \(y\) 就可以被 \(B_1\) 表出

    \(B_1\cup (B_2/T)\) 线性相关。

考虑如何求出 \(W\),可以考虑枚举 \(x:1\to |B_2|\)

  • \(b_x\in B_2\)

    1. \(b_x\) 可以被 \(B_1\cup \lbrace b_1,b_2\dots b_{x-1}\rbrace\) 表出

      \(b_x=p\oplus q,p\in V_1,q\)\(\lbrace b_1,b_2\dots b_{x-1}\rbrace\) 表出,则将 \(q\) 加入 \(W\)

    2. 否则不做任何操作。

证明这样可以求出 \(W\),只需要证明 \(V_{B_2-W}\cap V_1=\lbrace 0\rbrace\) 即可。

\(x\in V_{B_2/W}\cap V_1,x>0\)

则有 \(x\) 可以被 \(B_1\) 以及 \(B_2/W\) 表出,那么取出 \(B_2/W\) 里下标最大的 \(b_k\),则有 \(b_k\) 可以被 \(B_2/W/\lbrace b_k\rbrace\cup B_1\) 表出,那么与假设不符。

证毕。

实现:

struct node{int d[32];node(){memset(d,0,sizeof d);}void ins(int x){for(int i=31;i>=0;--i)if((x>>i)&1){if(d[i])x^=d[i];else {d[i]=x;return ;}}}bool count(int x){for(int i=31;i>=0;--i)if((x>>i)&1){if(!d[i])return false;x^=d[i];}return true;}node operator&(const node b)const {node tmpa;memcpy(tmpa.d,d,sizeof d);node uda=tmpa,res;for(int i=0;i<32;++i)if(b.d[i]){int x=b.d[i],sur=0,tag=1;for(int j=i;j>=0;--j)if((x>>j)&1){if(tmpa.d[j])x^=tmpa.d[j],sur^=uda.d[j];else {tmpa.d[j]=x,uda.d[j]=sur,tag=0;break;}//uda.d[i] 指该元素使用的 B_1 中元素 xor 和}if(tag)res.ins(sur);}return res;}
};

例题:

牛客884B

给定 \(n\) 个线性基,问 \([l,r]\) 的线性基是否都能够表出 \(x\)

考虑先建立线段树,该节点代表子树内所有线性基的交。

然后查询时在分的log个线性基里各自查询即可。

复杂度 \(O(nk\log n+nk^2)\),其中 \(k\) 是线性基维度。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/835402.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

爱码单车队-冲刺日志第四天

会议记录:今天主要是投入一些后端的开发任务,然后开始实现基础的登录绑定用户的功能。

2024-2025-1 20241314 《计算机基础与程序设计》第八周学习总结

2024-2025-1 20241314 《计算机基础与程序设计》第八周学习总结 作业信息这个作业属于哪个课程 <班级的链接>(2024-2025-1-计算机基础与程序设计)这个作业要求在哪里 2024-2025-1计算机基础与程序设计第八周作业这个作业的目标 功能设计与面向对象设计 面向对象设计过…

bolt.new只要5分钟就能完成1个网站,神奇惊艳

下面是我用bolt.new5分钟完成的首页,前端页面配色和css都很好看,我觉得很惊艳啦!网站截图如下# 网站介绍生成随机yes或者no答案的网站,每次点击oracle按钮,可以生成yes或者no的随机答案,帮助选择困难症用户,轻松选择yes还是no 网站网址https://yesnooracle.dev 功能特点…

2024-2025-1 20241415《计算机基础与程序设计》第八周学习总结

如2024-2025-1 20241415 《计算机基础与程序设计》第八周学习总结 作业信息这个作业属于哪个课程 2024-2025-1-计算机基础与程序设计这个作业要求在哪里 2024-2025-1计算机基础与程序设计第八周作业这个作业的目标 功能设计与面向对象设计,面向对象设计过程,面向对象语言三要…

爱码单车队-冲刺日志第二天

会议记录:在第二天的冲刺中,团队成员在接口文档设计与前端框架方面取得了一定进展。经过小组的共同努力,确定了前段设计与后端对接的接口, 为后续的开发工作奠定了基础。虽然目前前端设计与预期原型存在较大差距,但基本功能已经得以实现。 接下来,团队将继续优化功能,并…

猿人学web端爬虫攻防大赛赛题第20题——2022新春快乐

题目网址:https://match.yuanrenxue.cn/match/20 解题步骤解题之前需要先了解wasm是什么:https://docs.pingcode.com/ask/294587.html看数据包。sign是一串加密的字符串,t一看就是时间戳。全局搜索api/match/20,只有一处。打断点,触发。看下sign的生成逻辑。 "sign&q…

[Tricks-00004]CF1954F(自己胡的 trick,被 Burnside 完爆)

介绍下自己的离奇思路: 先读清楚题意!要求是旋转等价,即两个以 \(c\) 个 \(1\) 开头,总 \(1\) 个数不超过 \(k+c\) 的字符串算一种。 那怎么刻画"只算一种"这个条件呢?一个想法可以是,对每个字符串赋一个权值,一种字符串的权值即旋转出来的每个合法的,把它们…

工控机维修数据恢复

工控机是一种加固的增强型个人计算机,由于经常在环境比较恶劣的情况下运行,对数据的安全性要求也更高。 一、数据丢失的原因 用户误操作:如错误删除文件、不小心切断电源等,这些操作可能导致数据丢失或损坏。 入侵与感染:恶意程序可能破坏硬盘数据,甚至具有格式硬盘的功能…

RAG 系统高效检索提升秘籍:如何精准选择 BGE 智源、GTE 阿里与 Jina 等的嵌入与精排模型的完美搭配

RAG 系统高效检索提升秘籍:如何精准选择 BGE 智源、GTE 阿里与 Jina 等的嵌入与精排模型的完美搭配RAG 系统高效检索提升秘籍:如何精准选择 BGE 智源、GTE 阿里与 Jina 等的嵌入与精排模型的完美搭配 Text Embedding 榜单:MTEB、C-MTEB 《MTEB: Massive Text Embedding Benc…

Golang的GMP调度模型与源码解析

0、引言 我们知道,这当代操作系统中,多线程和多进程模型被广泛的使用以提高系统的并发效率。随着互联网不断的发展,面对如今的高并发场景,为每个任务都创建一个线程是不现实的,使用线程则需要系统不断的在用户态和内核态之间不断的切换,引起不必要的损耗,于是引入了协程…

有限状态机(FSM)的使用

有限状态机的使用 有限状态机在游戏制作中十分常见,它既可以作为玩家角色的控制框架,纯代码控制动画的播放,免去动画间的“连连看”;也可以制作简单的AI,甚至还可以搭配其它AI决策方式做出更复杂易用的AI控制……本文仅是个人对有限状态机的理解,与大家一同交流有限状态机…