最近补的算法

1. 高斯消元

求矩阵逆, 增广单位阵然后消元

求行列式, 先消元后对角线乘积即为行列式

求代数余子式$A_{xy}$, 先求出伴随矩阵$A^*=|A|A^{-1}$, 然后$A_{xy}=A^*[y][x]$

https://codeforces.com/contest/832/submission/61763466 

https://codeforces.com/contest/1344/submission/84584146

void Gauss(int A[N][N], int n, int m, int q) {
	//A为n行m+q列矩阵, n为方程数, m为变量数
	//q为增广的列数, r为矩阵秩
	int r = 0;
	REP(i,1,m) {
		int p = r;
		while (!A[p][i]&&p<=n) ++p;
		if (p>n) continue;
		if (p!=r) REP(j,1,m+q) swap(A[p][j],A[r][j]);
		REP(j,1,n) if (j!=r&&A[j][i]) {
			ll t = A[j][i]*inv(A[r][i])%P;
			REP(k,1,m+q) A[j][k]=(A[j][k]-t*A[r][k]%P+P)%P;
		}
		++r;
	}
}

2. exgcd

ll exgcd(ll a, ll b, ll &x, ll &y) {
	ll d = a;
	if (!b) return x=1,y=0,d;
	return d=exgcd(b,a%b,y,x),y-=a/b*x,d;
}

3. excrt

4. 极角排序

5. splay

猜你喜欢

转载自www.cnblogs.com/fs-es/p/13190855.html