bzoj 1002: [FJOI2007]轮状病毒(打表找规律或基尔霍夫矩阵)
2016-05-17 21:34
204 查看
1002: [FJOI2007]轮状病毒
Time Limit: 1 Sec Memory Limit: 162 MBSubmit: 4055 Solved: 2235
[Submit][Status][Discuss]
Description
轮状病毒有很多变种,所有轮状病毒的变种都是从一个轮状基产生的。一个N轮状基由圆环上N个不同的基原子和圆心处一个核原子构成的,2个原子之间的边表示这2个原子之间的信息通道。如下图所示
![](http://www.lydsy.com/JudgeOnline/upload/201604/1(3).png)
N轮状病毒的产生规律是在一个N轮状基中删去若干条边,使得各原子之间有唯一的信息通道,例如共有16个不
同的3轮状病毒,如下图所示
![](http://www.lydsy.com/JudgeOnline/upload/201604/2(3).png)
现给定n(N<=100),编程计算有多少个不同的n轮状病毒
Input
第一行有1个正整数nOutput
计算出的不同的n轮状病毒数输出Sample Input
3Sample Output
16HINT
Source
[Submit][Status][Discuss]
题解:高精度+打表找规律
1 2 3 4 5 6 7
1 5 16 45 121 320 841
于是就可以看出一个递推关系: a[i]=3*a[i-1]-a[i-2]+2
不过这道题的应该是一道生成树计数问题,应该是用基尔霍夫矩阵求解。
#include<iostream> #include<cstdio> #include<cstring> #include<cmath> #include<algorithm> using namespace std; int n,m; int a[120][120],x[120],y[120],ans[120]; void calc(int x1,int y1,int k) { for (int i=0;i<=a[x1][0];i++) x[i]=a[x1][i]; for (int i=0;i<=a[y1][0];i++) y[i]=a[y1][i]; for (int i=1;i<=x[0];i++) x[i]=x[i]*3; int t=0; for (int i=1;i<=x[0];i++) { x[i]+=t; t=x[i]/10; x[i]%=10; } while (t) { x[++x[0]]=t%10; t/=10; } int len=x[0]; memset(ans,0,sizeof(ans)); ans[0]=len; ans[1]+=2; for (int i=1;i<=len;i++) ans[i]=ans[i]+x[i]; t=0; for (int i=1;i<=len;i++) { ans[i]+=t; t=ans[i]/10; ans[i]%=10; } while (t) { ans[++ans[0]]=t%10; t/=10; } for (int i=1;i<=ans[0];i++) { if (ans[i]-y[i]<0) ans[i+1]--,ans[i]+=10; ans[i]-=y[i]; } while (ans[ans[0]]==0) --ans[0]; for (int i=0;i<=ans[0];i++) a[k][i]=ans[i]; } int main() { scanf("%d",&n); a[1][1]=1; a[1][0]=1; a[2][1]=5; a[2][0]=1; for (int i=3;i<=n;i++) calc(i-1,i-2,i); for (int i=a [0];i>=1;i--) printf("%d",a [i]); printf("\n"); }
相关文章推荐
- 膨胀和腐蚀
- 面向接口编程以及面向接口编程的好处
- 排序算法:快速排序
- Spring解析
- Android开发中图标像素大小规范
- windows 8 wmware player centos 安装 伪分布式 hadoop
- 数字序列
- cccc PAT 1023组个最小数
- Spring的IOC的解析
- HashMap的默认容量和加载因子
- python笔记之ArcPy简介
- [Book Note] Haskell: Functor & Applicative
- 第一个程序HelloWord
- hdu4638 莫对算法 离线区间查询(非更新)
- hdu1116 欧拉图的判定(点的度数的判定+用并查集/dfs对连通图的判定)
- [线性代数] 矩阵#1
- {sharepoint} Setting List Item Permissions Programatically in sharepoint
- Socket TCP
- 【MyBatis框架点滴】——mybatis插入数据返回主键(mysql、oracle)
- 51CTO第一篇博客