BZOJ-1002 轮状病毒 高精度加减+Kirchhoff矩阵数定理+递推
来源:互联网 发布:社招 算法题 编辑:程序博客网 时间:2024/05/18 18:02
1002: [FJOI2007]轮状病毒
Time Limit: 1 Sec Memory Limit: 162 MB
Submit: 3543 Solved: 1953
[Submit][Status][Discuss]
Description
给定n(N<=100),编程计算有多少个不同的n轮状病毒。
Input
第一行有1个正整数n。
Output
将编程计算出的不同的n轮状病毒数输出
Sample Input
3
Sample Output
16
HINT
基尔霍夫矩阵Matrix-Tree定理,最小生成树数种类数,具体的参见此讲解:http://www.bubuko.com/infodetail-899543.html对于本题的作用是用此方法模拟出前几组种类数,然后找递推式,加高精度答案即可
递推式为:F【n】=F【n-1】*3-F【n-2】+2
#include<iostream>#include<cstdio>#include<algorithm>#include<cstring>using namespace std;struct data{ int num[100];};data s0,s1,s2,s3;int n;//s1表示f【n-2】,s2表示f【n-1】,s3记录答案,s0为常数2 data add(data x,data y){ int len=max(x.num[0],y.num[0]); data z; int jw=0; for (int i=1; i<=len; i++) { z.num[i]=(jw+x.num[i]+y.num[i])%10; jw=(jw+x.num[i]+y.num[i])/10; } if (jw!=0) z.num[++len]=jw; z.num[0]=len; return z;}//高精度加法 data sub(data x,data y){ int len=max(x.num[0],y.num[0]); data z; for (int i=1; i<=len; i++) z.num[i]=x.num[i]-y.num[i]; for (int i=1; i<=len; i++) if (z.num[i]<0) {z.num[i]+=10;z.num[i+1]--;} while (z.num[len]==0) {len--;} z.num[0]=len; return z; }//高精度减法 int main(){ scanf("%d",&n); if (n==1) {printf("1"); return 0;} if (n==2) {printf("5"); return 0;} s1.num[1]=1; s2.num[1]=5; s1.num[0]=s2.num[0]=1; s0.num[0]=1;s0.num[1]=2; for (int i=3; i<=n; i++) { s3=add(sub(add(s2,add(s2,s2)),s1),s0); s1=s2;s2=s3; } for (int i=s3.num[0]; i>=1; i--) printf("%d",s3.num[i]); return 0; }
0 0
- BZOJ-1002 轮状病毒 高精度加减+Kirchhoff矩阵数定理+递推
- BZOJ 1002: [FJOI2007]轮状病毒 递推/基尔霍夫矩阵树定理
- BZOJ 1002 FJOI2007 轮状病毒 递推+高精度
- 【递推】【高精度】【FJOI 2007】【bzoj 1002】轮状病毒
- [bzoj 1002] [FJOI2007]轮状病毒:数学,递推,高精度
- bzoj - 1002 【Kirchhoff矩阵】
- bzoj1002 轮状病毒 递推 高精度
- BZOJ 题目1002 [FJOI2007]轮状病毒(高精度+基尔霍夫矩阵)
- 【BZOJ 1002】 [FJOI2007]轮状病毒 【矩阵树定理】【留坑】
- [BZOJ 1002][FJOI2007]轮状病毒(高精+矩阵树定理?)
- BZOJ 1002: [FJOI2007]轮状病毒 高精度
- 【bzoj 1002】轮状病毒(高精度)
- bzoj【Kirchhoff矩阵】
- bzoj1002[FJOI2007]轮状病毒 递推+高精度
- BZOJ 1002 轮状病毒 生成树计数(行列式递推)
- BZOJ 1002([FJOI2007]轮状病毒-基尔霍夫矩阵)
- BZOJ 1002 矩阵树找规律递推高精度 解题报告
- BZOJ 1002 FJOI 2007 轮状病毒 暴力+找规律+高精度
- Struts配置中param参数的含义
- NGUI常见问题集(待续)
- iOS HLS 流媒体文件打散问题 - 只有声音无影像
- 获得MFC窗口其它类指针的方法
- MySQL字符串连接函数
- BZOJ-1002 轮状病毒 高精度加减+Kirchhoff矩阵数定理+递推
- Javascript 面向对象编程(一):封装
- 沈媛媛你们几个在学校操场等待着安泉的到来
- VS2008 MFC C_API方式连接Mysql
- hdoj 1998 奇数阶魔方 【找规律 填数】
- 12306
- 【jQuery】ance desc选择器
- 对JSON字符串进行解析
- Add Binary