线性代数过滤的脏水

news/2025/2/5 21:55:04/文章来源:https://www.cnblogs.com/Clay-L/p/18316246

线性代数

向量

\(\to\),信息学中用形如

\[\begin{bmatrix}a_1\\a_2\\\vdots\\a_p\end{bmatrix} \]

的矩阵来表示指向 \(\left(a_1,a_2,...,a_p\right)\)\(p\) 维向量。

向量求和

直接就 \(\vec{a}+\vec{b}=\vec{c}\) 时满足 :

投影

借用8分钟带你彻底弄懂《线性代数》-CSDN博客的图

矩阵

出题人恶心人用的。分为列向量和行向量。

长这样:

\[\begin{pmatrix}a_{1,1}&\cdots&a_{1,m}\\\vdots&\ddots&\vdots\\a_{n,1}&\cdots&a_{n,m}\end{pmatrix} \]

矩阵加减法

\(A+B=C\)\(A,B\)\(m\times n\) 的矩阵,则 \(C_{i,j}=A_{i,j}+B_{i,j}\)

\(A-B\) 同理。

易得:只有同型矩阵可进行相加或相减操作。

代码

//I am too lazy to write it.

矩阵乘法

点乘

信息学中涉及不多,拎出来讲一下:

\(A\cdot B=C\)\(A,B\)\(m\times n\) 的矩阵,则 \(C_{i,j}=A_{i,j}B_{i,j}\)

或设 \(A\cdot B=C\)\(A\)\(1\times n\) 的矩阵,\(B\)\(m\times n\) 的矩阵,则 \(C_{i,j}=A_{i}B_{i,j}\)

显而易见的,点乘只能在 \(A,B\) 行数相同,列数相同或行数相同,\(A\) 只有 \(1\) 列的情况下进行。

叉乘

\(A\times B=C\),其中 \(A\)\(m\times g\) 的矩阵,\(B\)\(g\times n\) 的矩阵,则 \(C_{i,j}=\sum^g_{k=1}A_{i,k}B_{k,j}\\\)

易得:只有当 \(A\) 的行数与 \(B\) 的列数相等时 \(A\)\(B\) 才可进行叉乘。

容(lan)易(de)证明,一般的矩阵叉乘不满足交换律,但满足结合律。

代码

点乘:
//懒得贴了
叉乘:
for(int k=1;k<=g;k++)for(int i=1;i<=n;i++)for(int j=1;j<=n;j++)c[i][j]+=a[i][k]*b[k][j];

快速幂优化

就是说一堆 \(A\) 乘在一起就可以用矩阵快速幂。

代码(用的重载运算符):
struct matrix{int a[MAXN][MAXN];matrix(){memset(a,0,sizeof(a));}matrix operator*(const matrix&b)const{matrix c;for(int k=1;k<=n;k++)for(int i=1;i<=n;i++)for(int j=1;j<=n;j++)c.a[i][j]+=(a[i][k]*b.a[k][j])%mod,c.a[i][j]%=mod;return c;}
}a;
matrix qpow(matrix x,int y){matrix ans;for(int i=1;i<=n;i++)ans.a[i][i]=1;while(y){if(y&1)ans=ans*x;x=x*x,y>>=1;}return ans;
}

矩阵快速幂求斐波那契数列

不多赘述:初始矩阵 \(\begin{bmatrix}1&1\\0&0\end{bmatrix}\),转移矩阵 \(\begin{bmatrix}1&1\\1&0\end{bmatrix}\)

代码:
struct matrix{int a[2][2]={{0,0},{0,0}};matrix operator*(const matrix&b)const{matrix c;for(int k=0;k<2;k++)for(int i=0;i<2;i++)for(int j=0;j<2;j++)c.a[i][j]+=(a[i][k]*b.a[k][j])%mod,c.a[i][j]%=mod;return c;}inline void init(){a[0][0]=a[0][1]=a[1][0]=1;a[1][1]=0;}
}a;
inline matrix qpow(matrix x,int y){matrix ans;ans.a[0][0]=ans.a[0][1]=1; while(y){if(y&1)ans=ans*x;x=x*x,y>>=1;}return ans;
}
//求fib[n]输出a[0][0]即可.

高斯消元

高斯消元法(Gauss–Jordan elimination)是求解线性方程组的经典算法,它在当代数学中有着重要的地位和价值,是线性代数课程教学的重要组成部分——OIWiki

过程(包括异或高斯消元)

  1. 将矩阵化为“倒三角”形式,即 Link。
  2. 代入,回到 1,循序渐进求解。

代码

normal
for(int i=1;i<=n;i++)for(int j=1;j<=n+1;j++)cin>>a[i][j];
for(int i=1;i<=n;i++){int maxx=i;for(int j=1;j<=n;j++){if(fabs(a[j][j])>1e-7&&j<i)continue;if(fabs(a[j][i])>fabs(a[maxx][i]))maxx=j;}for(int j=1;j<=n+1;j++)swap(a[i][j],a[maxx][j]);if(fabs(a[i][i])<1e-7)continue;for(int j=n+1;j>=1;j--)a[i][j]/=a[i][i];for(int j=1;j<=n;j++){if(j!=i){double g=a[j][i]/a[i][i];for(int k=1;k<=n+1;k++)a[j][k]-=a[i][k]*g;}}
}
xor
bitset<1010>a[2010];
inline int gsxy(int n,int m){int t=-1;for(int i=1;i<=n;i++){int maxx=i;while(maxx<=m&&!a[maxx].test(i))maxx++;if(maxx>m)return -1;if(maxx!=i)swap(a[maxx],a[i]);for(int j=1;j<=m;j++)if(i!=j&&a[j].test(i))a[j]^=a[i];t=max(t,maxx);}return t;
}
//上面下面都是狗屎,上面是goshixiaoyuan,下面是Clay_L的goshimainfunction
for(int i=1;i<=m;i++){string str;bool v;cin>>str>>v;for(int j=0;j<n;j++)a[i].set(j+1,str[j]==49);a[i].set(0,v);
}
int ans=gsxy(n,m); 

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

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

相关文章

谷歌为什么要用AIDL替代HIDL(HAL)?

谷歌为什么要用AIDL替代HIDL(HAL)?背景:官方:https://source.android.com/devices/architecture/aidl/aidl-hals.Google 在Android 11引入了AIDL for HALs,旨在代替HIDL原先的作用。在之后的Android版本推荐使用AIDL 实现Hal层的访问。这样做的原因,应该有以下几点:AIDL比…

Halcon的Blob分析

一、Blob分析流程及常用算子 1.基本步骤 Blob分析的基本步骤,这是一种理想状态,也是最基本的套路,获取图像->分割图像(区分前景像素和背景像素)->特征提取(比如面积、重心、旋转角度等)。 halcon代码实现如下: read_image(Image,‘particle’) threshold(Image, …

U454574

好奇怪的题,玩空洞的时候想到的,但原来草稿纸丢掉了qwq,懒,什么时候来补吧 看到这个很容易想到dp,设dp[i]为到第i个点的最小时间。然后用dp[i]更新后面。考虑判定如何从一个点走到另一个点。我们发现,平移原来的跳跃路径是没有关系的。通过数学方法和感新理解可以发现前面…

蓝牙H4传输层协议

蓝牙H4传输层协议蓝牙几种不同接口的传输协议:H2/H4/H5/BCSP/SDIO及区别 H2:基于USB的传输H4:基于五线UART(RX/TX/CTS/RTS/GND带硬件流控)的传输,最简单的传输方式,只在HCI raw data前面加上一个type;H5: 基于三线UART(RX/TX/GND)的传输,需要软件协议层加一个数据完整性校…

模块2 面向对象编程初级 --- 第四章:创建类

第四章 创建类 主要知识点:1、类的定义2、类的修饰 学习目标:掌握类的定义方法,能够编写简单的类。 4.1 类的定义问题空间元素在方法空间中的表示称为对象,面向对象的程序设计是以解决的问题中所涉及到的各种对象为主要考虑因素,更加贴近于人的思维方式,面向对象程序设计…

UOS系统部署KingbaseES V8R6 java故障“InvocationTargetException”

KingbaseES案例说明: 在UOS系统下部署KingbaseES V8R6数据库时,出现Java错误,部署失败。 系统版本: kingbase@srv01:~$ cat /etc/os-release PRETTY_NAME="UnionTech OS Server 20 " NAME="UnionTech OS Server 20 " VERSION_ID="20" VERSIO…

卷积神经网络CNN实战:MINST手写数字识别——数据集下载与网络训练

数据集下载 这一部分比较简单,就不过多赘述了,把代码粘贴到自己的项目文件里,运行一下就可以下载了。 from torchvision import datasets, transforms# 定义数据转换,将数据转换为张量并进行标准化 transform = transforms.Compose([transforms.ToTensor(), # 转换为张量t…

winform--穿梭框

新建一个用户控件: 直接上代码:/** 作者:pengyan zhang* 邮箱:3073507793@qq.com* 博客:https://www.cnblogs.com/zpy1993-09* 时间:2024-04-10 16:36*/public partial class ShuttleFrameControl : UserControl{private Color lb_BackColor { get; set; } = Color.Trans…

mpc

https://blog.csdn.net/apr15/article/details/133965768在“数据安全概述”里面, 我们提到了安全多方计算SMPC(Secure multi-party computation)的技术。在这个计算里面代表是密码分享SS (secret sharing)技术。 而开启整个算法世界的其实是华人科学家姚期智教授, 他提出…

一般网站制作流程

制作需要经过以下几个流程:设计页面效果图,一般为PSD或者PNG格式的原图; 将页面效果图输出为HTML格式,后缀名为“.htm”; 根据页面内容调用需求生成或者编写标签所需代码; 嵌套标签代码到输出页面对应位置; 测试调试模板文件,保证调用和设计效果一致; 将模板标签、文件…

帝国CMS的网站“Notice: Use of undefined constant”错误说明

“Notice: Use of undefined constant”错误说明解答:php.ini配置问题,按下面修改即可解决: 修改php.ini,把error_reporting = E_ALL改成 error_reporting = E_ALL & ~E_NOTICE扫码添加技术【解决问题,仅需10元起】专注中小企业网站建设、网站安全12年。熟悉各种CMS,精…

DASCTF 2023六月挑战赛|二进制专项 PWN (上)

DASCTF 2023六月挑战赛|二进制专项 PWN (上) 1.easynote edit函数对长度没有检查free函数存在UAF漏洞思路:1.通过堆溢出,UAF,修改size位达到堆块重叠,使用fastbin attack,把__malloc_hook,写入one_gadget 2.通过unlink修改free got表为system exp: from pwn import * co…