线性代数相关笔记
线性基
导入
线性基,顾名思义,就是一个包含数字最少的集合,使得原集合中的任何数都能用线性基中的元素表示。
集合中的元素满足一些性质:
- 原集合中的任意元素都可以用线性基中的若干元素的异或和表示
- 线性基中任意数异或和不为 0 0 0,否则不满足集合大小最小
- 以任意顺序枚举原集合中元素,所得集合大小相同
- 大小为 n n n 的线性基可以表示 2 n 2^n 2n 个数;若线性基中存在二进制第 i i i 位为 1 1 1 的数,则可以表示 2 n − 1 2^{n-1} 2n−1 个二进制下第 i i i 位为 1 1 1 的数。
操作
插入
我们用数组 p
表示线性基,假设要插入 x x x,从高到低枚举 x x x 的二进制的每一位数字,如果 x x x 的第 i i i 位为 1 1 1 且 p i = 0 p_i=0 pi=0,那么令 p i = x p_i=x pi=x 并结束插入;否则,令 x^=p[i]
,继续枚举下一位。
void insert(int x)
{for(int i=50;i>=0;--i)if(x>>i&1){if(!p[i]) {p[i]=x;break;}else x^=p[i];}
}
求异或最大值
求原集合的子集的异或最大值,利用贪心思想。若 ans^p[i]>ans
,则 ans^=p[i]
。
int pmax()
{int ans=0;for(int i=50;i>=0;--i)if((ans^p[i])>ans) ans^=p[i];return ans;
}
求异或最小值
分两种情况考虑:
- 线性基大小 < < < 原集合大小:原集合中一定存在异或和为 0 0 0 的一些数,所以异或最小值为 0 0 0。
- 线性基大小 = = = 原集合大小:在线性基内求异或最小值,线性基内的最小元素与其他元素异或得到的值一定更大,所以异或最小值为线性基中最小元素。
剩的异或 k k k 小值先咕了 QwQ
本来学线性基是想过 YbtOJ 的最大异或对的,结果发现线性基是任意数的最大异或和,这一道题是一对,只能用 trie 树
练手板子题
代码如下:
#include <bits/stdc++.h>
using namespace std;
#define int long longint p[55];void insert(int x)
{for(int i=50;i>=0;--i)if(x>>i&1){if(!p[i]) {p[i]=x;break;}else x^=p[i];}
}int pmax()
{int ans=0;for(int i=50;i>=0;--i)if((ans^p[i])>ans) ans^=p[i];return ans;
}signed main()
{int n,x;cin>>n;for(int i=1;i<=n;i++) cin>>x,insert(x);cout<<pmax();return 0;
}
行列式
行列式,是一种对于矩阵的特殊形式——方阵的表示形式。所谓方阵,就是 n × n n\times n n×n的矩阵。
一个 n × n n\times n n×n 的方阵 A A A 的行列式记为 det ( A ) \det(A) det(A) 或者 ∣ A ∣ |A| ∣A∣,一个 2 × 2 2\times2 2×2 矩阵的行列式可表示如下:
det ( a b c d ) = a d − b c \det \begin{pmatrix} a&b\\ c&d \end{pmatrix}=ad-bc det(acbd)=ad−bc
把一个 n n n 阶行列式中的元素 a i j a_{ij} aij 所在的第 i i i行和第 j j j列划去后,留下来的 n − 1 n-1 n−1 阶行列式叫做元素 a i j a_{ij} aij 的余子式,记作 M i j M_{ij} Mij。记 A i j = ( − 1 ) i + j M i j A_{ij}=(-1)^{i+j}M_{ij} Aij=(−1)i+jMij,叫做元素 a i j a_{ij} aij 的代数余子式。
一个 n × n n\times n n×n 矩阵的行列式等于其任意行(或列)的元素与对应的代数余子式乘积之和,即:
det ( A ) = a i 1 A i 1 + ⋯ + a i n + A i n = ∑ j = 1 n a i j ( − 1 ) i + j det ( A i j ) \det(A)=a_{i1}A_{i1}+\cdots+a_{in}+A_{in}=\sum_{j=1}^na_{ij}(-1)^{i+j}\det(A_{ij}) det(A)=ai1Ai1+⋯+ain+Ain=j=1∑naij(−1)i+jdet(Aij)
代码实现:
int dett(int a[maxn][maxn],int n)//n为阶数
{int dett=0,k=0,h=0;if(n==1) return a[0][0];else if(n==2) return a[0][0]*a[1][1]-a[0][1]*a[1][0];else{for(int p=0;p<n;p++){for(int i=0;i<n;i++)for(int j=0;j<n;j++){if(j==p) continue;tmp[h][k]=a[i][j],k++;if(k==n-1) h++,k=0;}dett=dett+a[0][p]*pow(-1,p)*det(tmp,n-1)}return dett;}
}
高斯消元
前置芝士
三角矩阵
上三角矩阵的对角线左下方的系数全部为 0 0 0,下三角矩阵的对角线右上方的系数全部为 0 0 0。三角矩阵可以看作是一般方阵的一种简化情形。由于带三角矩阵的矩阵方程容易求解,在解多元线性方程组时,总是将其系数矩阵通过初等变换化为三角矩阵来求解。
举个栗子,下面的矩阵 U U U 就是一个上三角矩阵。
U = [ u 1 , 1 u 1 , 2 u 1 , 3 ⋯ u 1 , n 0 u 2 , 2 u 2 , 3 ⋯ u 2 , n 0 0 ⋱ ⋱ ⋮ ⋮ ⋮ 0 ⋱ u n − 1 , n 0 0 ⋯ 0 u n , n ] U= \begin{bmatrix} u_{1,1}&u_{1,2}&u_{1,3}&\cdots&u_{1,n}\\ 0&u_{2,2}&u_{2,3}&\cdots&u_{2,n}\\ 0&0&\ddots&\ddots&\vdots\\ \vdots&\vdots&0&\ddots&u_{n-1,n}\\ 0&0&\cdots&0&u_{n,n} \end{bmatrix} U= u1,100⋮0u1,2u2,20⋮0u1,3u2,3⋱0⋯⋯⋯⋱⋱0u1,nu2,n⋮un−1,nun,n
增广矩阵
又称扩增矩阵,就是在系数矩阵的右边添上一列,这一列是线性方程组的等号右边的值。
高斯消元
基本思想
通过一系列的加减消元运算,将方程组化为上三角矩阵。然后再逐一回代求出 x x x。
实现过程
解方程:
{ 3 x 1 + 2 x 2 + x 3 = 6 2 x 1 + 2 x 2 + 2 x 3 = 4 4 x 1 − 2 x 2 − 2 x 3 = 2 \begin{cases} 3x_1+2x_2+x_3=6\\ 2x_1+2x_2+2x_3=4\\ 4x_1-2x_2-2x_3=2 \end{cases} ⎩ ⎨ ⎧3x1+2x2+x3=62x1+2x2+2x3=44x1−2x2−2x3=2
我们把这个方程组写成增广矩阵的形式:
相关文章:
线性代数相关笔记
线性基 导入 线性基,顾名思义,就是一个包含数字最少的集合,使得原集合中的任何数都能用线性基中的元素表示。 集合中的元素满足一些性质: 原集合中的任意元素都可以用线性基中的若干元素的异或和表示线性基中任意数异或和不为…...
【SA8295P 源码分析 (四)】69 - Android 侧添加支持 busybox telnetd 服务
【SA8295P 源码分析】69 - Android 侧添加支持 busybox telnetd 服务 一、下载 busybox-1.36.1.tar.bz2 源码包二、编译 busybox 源码三、将编译后的 busybox 打包编入Android 镜像中系列文章汇总见:《【SA8295P 源码分析 (四)】网络模块 文章链接汇总 - 持续更新中》 本文链接…...

如何开发一个 Safari 插件
本文字数:2493字 预计阅读时间:15分钟 由于常用浏览器是Safari,而Safari浏览器的插件比不上Chrome,所以就有了自己开发常用的Safari插件的想法。 打算开发当前页面生成二维码的Extension,因为网络原因,AirD…...
n皇后问题,不用递归
注释如下: class Solution:def totalNQueens(self, n: int) -> int:if n < 1: # 如果 n 小于 1,直接返回 0return 0count 0 # 初始化解的个数为 0stack [(0, set(), set(), set())] # 初始化一个栈,元素为当前处理的行数、已经放…...

Verilog基础:$fopen和$fclose系统函数、任务的使用
相关阅读 Verilog基础https://blog.csdn.net/weixin_45791458/category_12263729.html?spm1001.2014.3001.5482 $fopen和$fclose是两个用于打开和关闭文件的系统函数、任务。最初,在Verilog-1995标准中,最多只能同时打开32个文件,其所使用的…...
python之字典的用法
python之字典的用法 Python中的字典是一种无序、可变、可迭代的数据类型,它由键值对组成,每个键都映射到一个值。字典在Python中被视为可变对象,这意味着我们可以随时更新、添加或删除字典中的键值对。 以下是一些关于Python字典的基本用法&a…...

Leetcode1971. 寻找图中是否存在路径
Every day a Leetcode 题目来源:1971. 寻找图中是否存在路径 解法1:并查集 并查集介绍:并查集详解 代码: /** lc appleetcode.cn id1971 langcpp** [1971] 寻找图中是否存在路径*/// lc codestart class UnionFind {vector&…...

程序可以创建多少个用户界面对象?
有人提到这样一个问题:”一个程序最多可以注册多少个窗口类?” 问题的答案不是一个具体的数字。因为大多数用户界面对象都来自一个共享的内存池,我们称之为”桌面堆内存”。尽管我们可以计算一个最大的理论值,但是在实际的场景中࿰…...
业绩不俗,毛利率下滑,股价接连下跌,片仔癀将向何处去?
撰稿|行星 来源|贝多财经 10月16日,中药龙头企业漳州片仔癀药业股份有限公司(600436.SH,下称“片仔癀”)发布截至9月30日的2023年前三季度业绩报告。发布财报后,片仔癀的股价多日下跌。 10月17日、18日、19日和20日…...
云安全—docker容器镜像检测
0x00 前言 docker镜像是属于整个云原生的重要基石之一,如果从镜像开始就没有安全性的话,那么整个云原生也就没有任何的安全性可言。所以镜像检测技术就成为了一个比较重要的点,本篇将通过研究docker镜像工具来整体分析风险以及应对方案。 市…...

JDBC相关记录
JDBC:Java DadaBase Connectivity 即Java语言连接数据库。 本质:JDBC是SUN公司制定的一套接口(interface)。 作用:不同的数据库有自己独特设计原理,JDBC的可以让Java程序员关注业务本身,而不需要…...

Nginx的基本介绍 安装 配置文件 日志
一、Nginx介绍二、nginx的优点三、多路复用1、I/O multiplexing 多并发 四、nginx内部技术架构五、安装NginxNginx部署-yum安装获取Nginx的yum源yum安装Nginx浏览器访问 编译安装Nginx安装编译环境安装依赖环境创建nginx用户安装nginx启动nginx实现nginx开机自启(脚…...

docker部署nginx并设置挂载
前言: 最近在学习docker和nginx,因为容器在运行过程中,相关的配置文件及日志都会存在容器内。对容器以来较高,当容器不存在的时候。所有的文件也就都没有了。并且当需要查看日志,修改配置文件的时候必须进入到容器内部…...

MAC如何在根目录创建文件
在这之前先明确一下啥是根目录。 打开终端,输入cd /,然后输入 ls 查看根目录下有哪些文件 可以看到 usr、etc、opt 这些文件的地方才叫根目录,而不是以用户命名,可以看到音乐、应用程序、影片、桌面的地方哈 介绍一种叫做软连接…...

某全球领先的芯片供应商:优化数据跨网交换流程,提高安全管控能力
1、客户介绍 某全球领先的芯片供应商,成立于2005年,总部设于北京,在国内上海、深圳、合肥等地及国外多个国家和地区均设有分支机构和办事处,致力于为客户提供更优质、便捷的服务。 2、建设背景 该公司基于网络安全管理的需求&am…...

自然语言处理---文本预处理概述
自然语言处理(Natural Language Processing,简称NLP)是计算机科学与语言学中关注于计算机与人类语言间转换的领域。其主要应用于:语音助手、机器翻译、搜索引擎、智能问答等。 文本预处理概述 文本语料在输送给模型前一般需要一…...
GCC编译器 什么是宏? 标识符和关键字
一.GCC是什么? GCC是用于编译C语言和其它语言的开源软件。 全称是 GNU Compiler Collection,意思是GNU编译器集和。 支持多种操作系统和硬件平台。二.GCC的作用 GCC的作用是将源码转换为可执行的文件,使之可以在计算机上运行。三.GCC编译c文…...

【GESP】2023年06月图形化三级 -- 自幂数判断
文章目录 自幂数判断【题目描述】【输入描述】【输出描述】【参考答案】其他测试用例 自幂数判断 【题目描述】 自幂数是指N位数各位数字N次方之和是本身,如153是3位数,其每位数的3次方之和是153本身,因此153是自幂数,1634是4位数…...

MySQL常见面试题
一、存储引擎相关 (1)MySQL 支持哪些存储引擎? MySQL支持多种存储引擎,比如InnoDB,MyISAM, MySQL大于等于5.5之后,默认存储引擎是InnoDB (2)InnoDB 和 MyISAM 有什么区别? InnoD…...
前端HTML CSS JS风格规范
本文代码规范来自HTML/CSS代码开发规范文档 文件命名规范 使用小写字母、数字和下划线组成文件名。 避免使用特殊字符和空格。 使用语义化的命名,能够清晰地表达出文件的功能或内容。 目录结构规范 使用约定俗成的目录结构,如:src/compon…...
Android Wi-Fi 连接失败日志分析
1. Android wifi 关键日志总结 (1) Wi-Fi 断开 (CTRL-EVENT-DISCONNECTED reason3) 日志相关部分: 06-05 10:48:40.987 943 943 I wpa_supplicant: wlan0: CTRL-EVENT-DISCONNECTED bssid44:9b:c1:57:a8:90 reason3 locally_generated1解析: CTR…...

阿里云ACP云计算备考笔记 (5)——弹性伸缩
目录 第一章 概述 第二章 弹性伸缩简介 1、弹性伸缩 2、垂直伸缩 3、优势 4、应用场景 ① 无规律的业务量波动 ② 有规律的业务量波动 ③ 无明显业务量波动 ④ 混合型业务 ⑤ 消息通知 ⑥ 生命周期挂钩 ⑦ 自定义方式 ⑧ 滚的升级 5、使用限制 第三章 主要定义 …...

关于nvm与node.js
1 安装nvm 安装过程中手动修改 nvm的安装路径, 以及修改 通过nvm安装node后正在使用的node的存放目录【这句话可能难以理解,但接着往下看你就了然了】 2 修改nvm中settings.txt文件配置 nvm安装成功后,通常在该文件中会出现以下配置&…...

第一篇:Agent2Agent (A2A) 协议——协作式人工智能的黎明
AI 领域的快速发展正在催生一个新时代,智能代理(agents)不再是孤立的个体,而是能够像一个数字团队一样协作。然而,当前 AI 生态系统的碎片化阻碍了这一愿景的实现,导致了“AI 巴别塔问题”——不同代理之间…...
OpenLayers 分屏对比(地图联动)
注:当前使用的是 ol 5.3.0 版本,天地图使用的key请到天地图官网申请,并替换为自己的key 地图分屏对比在WebGIS开发中是很常见的功能,和卷帘图层不一样的是,分屏对比是在各个地图中添加相同或者不同的图层进行对比查看。…...
【Go语言基础【12】】指针:声明、取地址、解引用
文章目录 零、概述:指针 vs. 引用(类比其他语言)一、指针基础概念二、指针声明与初始化三、指针操作符1. &:取地址(拿到内存地址)2. *:解引用(拿到值) 四、空指针&am…...
OD 算法题 B卷【正整数到Excel编号之间的转换】
文章目录 正整数到Excel编号之间的转换 正整数到Excel编号之间的转换 excel的列编号是这样的:a b c … z aa ab ac… az ba bb bc…yz za zb zc …zz aaa aab aac…; 分别代表以下的编号1 2 3 … 26 27 28 29… 52 53 54 55… 676 677 678 679 … 702 703 704 705;…...
人工智能 - 在Dify、Coze、n8n、FastGPT和RAGFlow之间做出技术选型
在Dify、Coze、n8n、FastGPT和RAGFlow之间做出技术选型。这些平台各有侧重,适用场景差异显著。下面我将从核心功能定位、典型应用场景、真实体验痛点、选型决策关键点进行拆解,并提供具体场景下的推荐方案。 一、核心功能定位速览 平台核心定位技术栈亮…...
二维FDTD算法仿真
二维FDTD算法仿真,并带完全匹配层,输入波形为高斯波、平面波 FDTD_二维/FDTD.zip , 6075 FDTD_二维/FDTD_31.m , 1029 FDTD_二维/FDTD_32.m , 2806 FDTD_二维/FDTD_33.m , 3782 FDTD_二维/FDTD_34.m , 4182 FDTD_二维/FDTD_35.m , 4793...
【深尚想】TPS54618CQRTERQ1汽车级同步降压转换器电源芯片全面解析
1. 元器件定义与技术特点 TPS54618CQRTERQ1 是德州仪器(TI)推出的一款 汽车级同步降压转换器(DC-DC开关稳压器),属于高性能电源管理芯片。核心特性包括: 输入电压范围:2.95V–6V,输…...