码迷,mamicode.com
首页 > 其他好文 > 详细

BZOJ 1002 轮状病毒(生成树个数)

时间:2014-06-23 06:18:06      阅读:227      评论:0      收藏:0      [点我收藏+]

标签:style   class   blog   java   http   ext   

题目链接:http://61.187.179.132/JudgeOnline/problem.php?id=1002

题意:求下面这种造型的生成树的个数。

bubuko.com,布布扣

思路:生成树的个数可以用那个矩阵 A:A[i][i]等于i的度数,A[i][j]等于i到j的边数的相反数。那么A的任意一个n-1阶的行列式(就是删掉任意一行一列)就是生成树的个 数。但是这里有一个递推公式,暴力完前几项可以找出这个,f[n]=3*f[n-1]-f[n-2]+2。

 

import java.util.*;
import java.text.*;
import java.math.*;


public class Main{
 
    public static void PR(String s){
        System.out.println(s);
    }
    
    public static void PR(int x)
    {
        System.out.println(x);
    }
    
      public static void PR(BigInteger x)
    {
        System.out.println(x);
    }
    
    public static void PR(double s)
    {
        java.text.DecimalFormat d=new java.text.DecimalFormat("#.000000");
        System.out.println(d.format(s));
    }
    
    
    static BigInteger a,b,c;
    static int n;
    
    
   
    public static void main(String[] args){
        
        Scanner S=new Scanner(System.in);
        while(S.hasNext())
        {
            n=S.nextInt();
            a=BigInteger.ONE;
            b=BigInteger.valueOf(5);
            int i;
            if(n==1) PR(a);
            else if(n==2) PR(b);
            else
            {
                for(i=3;i<=n;i++) 
                {
                    c=b.multiply(BigInteger.valueOf(3));
                    c=c.subtract(a).add(BigInteger.valueOf(2));
                    a=b;
                    b=c;
                }
                PR(c);
            }
        }
    }
}

 

 

 

BZOJ 1002 轮状病毒(生成树个数),布布扣,bubuko.com

BZOJ 1002 轮状病毒(生成树个数)

标签:style   class   blog   java   http   ext   

原文地址:http://www.cnblogs.com/jianglangcaijin/p/3799602.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!