矩阵与矩阵的基本运算
- 行向量:矩阵的某一行所形成的向量。
- 列向量:矩阵的某一列所形成的向量。
- 线性组合与基底:
- 矩阵乘法的分配律
- 矩阵乘法的结合律
- 不满足交换律
- 单位矩阵
线性基
void insert(int v){
per(i,lim,0)if((v>>i)&1){//如果要放到从下往上数第i行,就要保证v从右到左第i位为1
if(a[i])v^=a[i];//如果有数就消去v的最高位
else{
per(j,i-1,0)if((v>>j)&1)v^=a[j];//能消就消
rep(j,i+1,lim)if((a[j]>>i)&1)a[j]^=v;//能消就消
a[i]=v;break;
}
}
}
- 一些题目&trick
- 本质不同的子集异或和计数
- 给定 n 个数,第 i 个数为 ai,询问其中有多少个本质不同的子集异或和。n≤1e5,ai ≤1e9
- 答案就是:2^(最大线性无关集合)=2^(线性基中元素个数)
- 非线性基中元素都可以通过线性基中元素表示出来
- 最大/最小子集异或和
- 给定 n 个数,第 i 个数为 ai,询问其中子集异或和的最大值与最小值。 n≤1e5 , ai≤1e9
- 最大xor和:将线性基中所有元素异或起来。证明:显然???
- 最小xor和:如果线性基外没有元素,答案就是线性基内最小的一个元素,否则答案就是0。证明:显然???
- 异或和为零的子集计数
- 给定 n 个数,第 i 个数为 ai,询问其中有多少个子集是满足异或和为 0 的。 n≤1e5 , ai ≤1e9
- 答案就是:2^(线性基外元素个数)
- [BZOJ3105]
- [HDU3949]
- [BZOJ4568]
- [BZOJ2844]
- [BZOJ3569]
- [BZOJ2115]
这么多题.....zbl
常系数齐次线性递推的优化
- 基于 Cayley–Hamilton theorem 的变形
线性方程组的求解
bool gauss(){
rep(i,1,n){
int k=i;
rep(j,i+1,n)if(fabs(a[j][i])>fabs(a[k][i]))k=j;
if(fabs(a[k][i])<=eps)return 0;
if(k!=i)swap(a[k],a[i]);
double tmp=a[i][i];
rep(j,i,n+1)a[i][j]/=tmp;
rep(j,i+1,n){
tmp=a[j][i];
rep(k,i,n+1)a[j][k]-=a[i][k]*tmp;
}
}
ans[n]=a[n][n+1];
per(i,n-1,1){
ans[i]=a[i][n+1];
rep(j,i+1,n){
ans[i]-=a[i][j]*ans[j];
}
}return 1;
}
矩阵树定理
杂项