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

bzoj1002 [FJOI2007]轮状病毒

时间:2016-09-16 21:06:41      阅读:155      评论:0      收藏:0      [点我收藏+]

标签:

1002: [FJOI2007]轮状病毒

Time Limit: 1 Sec  Memory Limit: 162 MB
Submit: 4405  Solved: 2408
[Submit][Status][Discuss]

Description

  轮状病毒有很多变种,所有轮状病毒的变种都是从一个轮状基产生的。一个N轮状基由圆环上N个不同的基原子
和圆心处一个核原子构成的,2个原子之间的边表示这2个原子之间的信息通道。如下图所示

技术分享

  N轮状病毒的产生规律是在一个N轮状基中删去若干条边,使得各原子之间有唯一的信息通道,例如共有16个不
同的3轮状病毒,如下图所示

技术分享
  现给定n(N<=100),编程计算有多少个不同的n轮状病毒

 

Input

  第一行有1个正整数n

Output

  计算出的不同的n轮状病毒数输出

Sample Input

3

Sample Output

16
分析:题目只告诉我们一个n,让我们计算一个比较复杂的数,那么不是递推就是数学方法咯?要求生成树的个数,其实对于本题,递推≈数学方法,本质就是找规律,设f[i]为i轮状病毒方案数,那么可以通过列几组数据得到:f[i] = f[i-1] * 3 - f[i-2] + 2,注意到n <= 100,那么f可能达到3^100,那么就要用到高精度了,注意把+2和减法合并一下就可以了.(我竟然连%和/都区分不清了,太弱了.)

bzoj1002 [FJOI2007]轮状病毒

标签:

原文地址:http://www.cnblogs.com/zbtrs/p/5877128.html

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