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

BZOJ1002 [FJOI2007]轮状病毒

时间:2015-08-03 13:04:42      阅读:181      评论:0      收藏:0      [点我收藏+]

标签:

可以找规律,题目大概的意思就是求给定的图的不同的生成树的个数

可以求出n为1到10时的答案

1 5 16 45 121 320 841 2205 5776 15125

规律是

设odd[]为奇数项的平方根

那么odd[i] = odd[i-1]*3-odd[i-2];(i>=3)

偶数项每个除以5也可以得到上面的规律

最后在用高精度跑一下

C++基本是10ms以内,Java 880ms。。。。

 1 import java.io.*;
 2 import java.util.*;
 3 import java.math.*;
 4 class Main
 5 {
 6     public static void main(String args[]){
 7         Scanner cin = new Scanner(System.in);
 8         int n = cin.nextInt();
 9         BigInteger odd[] = new BigInteger[105];
10         BigInteger even[] = new BigInteger[105];
11         odd[1] = even[1] = BigInteger.ONE;
12         odd[2] = new BigInteger("4");
13         even[2] = new BigInteger("3");
14         for(int i = 3;i<=51;++i)
15             odd[i] = odd[i-1].multiply(even[2]).subtract(odd[i-2]);
16         for(int i = 3;i<=51;++i)
17             even[i] = even[i-1].multiply(even[2]).subtract(even[i-2]);
18         if(n%2==1)System.out.println(odd[(n+1)/2].multiply(odd[(n+1)/2]));
19         else System.out.println(even[n/2].multiply(even[n/2]).multiply(new BigInteger("5")));
20     }
21 }

 

BZOJ1002 [FJOI2007]轮状病毒

标签:

原文地址:http://www.cnblogs.com/GJKACAC/p/4699022.html

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