zoukankan      html  css  js  c++  java
  • bzoj 3534: [Sdoi2014]重建【矩阵树定理】

    啊啊啊无脑背过果然不可取
    比如这道题就不会写
    参考:https://blog.csdn.net/iamzky/article/details/41317333

    #include<iostream>
    #include<cstdio>
    #include<cmath>
    using namespace std;
    const int N=55;
    const double eps=1e-7;
    int n;
    double a[N][N],tmp=1;
    int cmp(double x)
    {
    	return x<-eps?-1:x>eps;
    }
    double gaosi(int n)
    {
    	double ans=1;
    	for(int i=1;i<=n;i++)
    	{
    		int nw=i;
    		for(int j=i+1;j<=n;j++)
    			if(fabs(a[j][i])>fabs(a[nw][i]))
    				nw=j;
    		for(int j=1;j<=n;j++)
    			swap(a[nw][j],a[i][j]);
    		for(int j=i+1;j<=n;j++)
    		{
    			double t=a[j][i]/a[i][i];
    			for(int k=i;k<=n;k++)
    				a[j][k]-=a[i][k]*t;
    		}
    		if(!cmp(a[i][i]))
    			return 0;
    		ans*=a[i][i];
    	}
    	return fabs(ans);
    }
    int main()
    {
    	scanf("%d
    ",&n);
    	for(int i=1;i<=n;i++)
    		for(int j=1;j<=n;j++)
    		{
    			scanf("%lf",&a[i][j]);
    			if(i!=j)
    			{
    				if(a[i][j]>1-eps)
    					a[i][j]-=eps;
    				if(i<j)
    					tmp*=1.0-a[i][j];
    				a[i][j]=a[i][j]/(1-a[i][j]);
    			}
    		}
    	for(int i=1;i<=n;i++)
    		for(int j=1;j<=n;j++)
    			if(i!=j)
    				a[i][i]-=a[i][j];
    	printf("%.8f
    ",gaosi(n-1)*tmp);
    	return 0;
    }
    
  • 相关阅读:
    asp.net微信开发第八篇----永久素材管理
    selenium模块
    request模块
    爬虫基本概念
    反向生成url
    admin的路由系统剖析
    popup方法
    ModelForm
    Django数据库操作性能相关
    缓存
  • 原文地址:https://www.cnblogs.com/lokiii/p/9259356.html
Copyright © 2011-2022 走看看