辗转相减法求高斯消元
\(O(n^3 \log n)\)
int n;
int a[N][N];
int Guess()
{
int ans=1,w=1;
for(int i=2;i<=n;i++)
for(int j=i+1;j<=n;j++)
{
while(a[i][i])
{
int nw=a[j][i]/a[i][i];
for(int k=i;k<=n;k++) a[j][k]-=nw*a[i][k];
swap(a[i],a[j]);
}
swap(a[i],a[j]);
}
}
应用:Martix Tree 求生成树个数。
int n;
int a[15][15];
int Guess()
{
int ans=1,w=1;
for(int i=2;i<=n;i++)
for(int j=i+1;j<=n;j++)
{
while(a[i][i])
{
int nw=a[j][i]/a[i][i];
for(int k=i;k<=n;k++) a[j][k]-=nw*a[i][k];
swap(a[i],a[j]);
w=-w;
}
swap(a[i],a[j]);
w=-w;
}
for(int i=2;i<=n;i++) ans*=a[i][i];
return ans*w;
}
以下是博客签名,正文无关
本文来自博客园,作者:Wy_x,转载请在文首注明原文链接:https://www.cnblogs.com/Wy-x/p/19229938
版权声明:本作品采用「署名-非商业性使用-相同方式共享 4.0 国际」许可协议(CC-BY-NC-SA 4.0 协议)进行许可。

浙公网安备 33010602011771号