BZOJ1002
来源:互联网 发布:林弯弯的淘宝店叫什么 编辑:程序博客网 时间:2024/06/05 07:27
1002: [FJOI2007]轮状病毒
思路:生成树计数+打表找规律
再次Orz周冬
显然这是一个生成树计数问题
主要思想都在他的论文《生成树的计数及其应用》中
构造n*n行列式M
若两点之间有边则M[i][j]=-1,否则M[i][j]=0
M[i][i]为i的度数(重边不计)
这个行列式的值就是生成树的个数
然而n=100,显然需要高精度
设n的答案为f[n],我们打个表
n f[n] 1 1 2 5 3 16 4 45 5 121 6 320 7 841 8 2205 9 5776 10 15125 11 39601 12 103680 13 271441 14 710645 15 1860496 16 4870845 17 12752041 18 33385280 19 87403801 20 228826125
通过打表可以得到:
f[n]=3*f[n-1]-f[n-2]+2
加上高精度完美解决该题
代码:
#include <cstdio>#include <cstdlib>#include <cstring>#include <ctime>#include <iostream>#include <algorithm>using namespace std;const int MAXN=110;int n;struct Big{ int a[MAXN]; void print() { for (int i=a[0];i>=1;i--) printf("%d",a[i]); printf("\n"); return ; }}f[MAXN];Big operator *(int k,Big X){ for (int i=1;i<=X.a[0];i++) X.a[i]*=k; for (int i=1;i<=X.a[0];i++) { X.a[i+1]+=X.a[i]/10; X.a[i]%=10; } if (X.a[X.a[0]+1]!=0) X.a[0]++; return X;}Big operator +(Big X,int k){ X.a[1]+=k; for (int x=1;X.a[x]>=10;x++) { X.a[0]=max(X.a[0],x); X.a[x+1]+=X.a[x]/10; X.a[x]%=10; } return X;}Big operator -(Big A,Big B){ Big re; memset(re.a,0,sizeof(re.a)); re.a[0]=A.a[0]; for (int i=1;i<=A.a[0];i++) re.a[i]=A.a[i]-B.a[i]; for (int i=1;i<=re.a[0];i++) { if (re.a[i]<0) { re.a[i]+=10; re.a[i+1]--; }} while (re.a[re.a[0]]==0) re.a[0]--; return re;}void init(){ cin>>n; f[1].a[0]=1; f[1].a[1]=1; f[2].a[0]=1; f[2].a[1]=5; for (int i=3;i<=n;i++) f[i]=3*f[i-1]-f[i-2]+2; f[n].print(); return ;}int main(){ init(); return 0;}
0 0
- BZOJ1002
- bzoj1002
- BZOJ1002
- bzoj1002
- bzoj1002
- BZOJ1002轮状病毒
- 【DP】bzoj1002
- [BZOJ1002]轮状病毒
- BZOJ1002轮状病毒
- [Bzoj1002][FJOI2007]轮状病毒
- bzoj1002[FJOI2007]轮状病毒
- 【bzoj1002】【FJOI2007】【轮状病毒】
- [高精度][BZOJ1002][FJOI2007]轮状病毒
- 【FJOI2007】【BZOJ1002】轮状病毒
- bzoj1002【fjoi2007】轮状病毒
- [BZOJ1002] [FJOI2007] 轮状病毒
- BZOJ1002 [FJOI2007]轮状病毒
- BZOJ1002: [FJOI2007]轮状病毒
- 点修改密码后,用JS实现弹出框 在框里输入密码后点修改返回
- 设计模式学习笔记--策略模式(Strategy Pattern)
- 健长乐胶囊真的可以长高吗?网上是不是造谣
- C99/GNU99对inline关键字的处理不同于C89
- 杭电参考了别人的题记得写总结
- BZOJ1002
- http://www.51testing.com/html/11/n-853611-2.html
- C#Winform通过鼠标拖拽来移动图片
- AMD, CommonJS, UMD?
- C语言中关于#ifdef _cplusplus extern "C"
- vs调试C++程序时提示 系统找不到指定文件
- IOS学习之网络笔记
- c文件操作
- vijos 1104 采药