cunzai_zsy0531

关注我

P4111 [HEOI2015]小 Z 的房间 题解

题面

板子。注意模数不是质数的 \(\det\)

inline int det(int n){
	int res=1;bool flag=0;
	for(int i=1;i<=n;++i)
		for(int j=i+1;j<=n;++j){
			while(a[i][i]){
				int tmp=a[j][i]/a[i][i];
				for(int k=i;k<=n;++k) modadd(a[j][k],(ll)(mod-tmp)*a[i][k]%mod);
				std::swap(a[i],a[j]);flag^=1;
			}
			std::swap(a[i],a[j]);flag^=1;
		}
	for(int i=1;i<=n;++i) res=(ll)res*a[i][i]%mod;
	return flag?mod-res:res;
}

复杂度应该是 \(O(n^2(n+\log p))\)

posted @ 2022-05-18 20:31  cunzai_zsy0531  阅读(15)  评论(0编辑  收藏  举报