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

noip复习之数学(2)——递推关系

时间:2019-10-01 23:09:58      阅读:183      评论:0      收藏:0      [点我收藏+]

标签:play   其他   关系   递推   方案   输入   cat   数字   需要   

1.问题一:兔子的繁殖(斐波拉契数列)

? f[n]=f[n-1]+f[n-2]

\[ Fibonacci:f(n)=\frac{1}{\sqrt{5}}\left(\frac{1+\sqrt{5}}{2}\right)^n-\frac{1}{\sqrt{5}}\left(\frac{1-\sqrt{5}}{2}\right)^n \]

问题二:凸三角形剖分/括号化问题/不同出栈次序数问题/二叉树个数问题(卡特兰数)

f[n]=f[2]f[n-1]+f[3]f[n-2]+...+f[n-1]f[2]=f[n-1](4*n-2)/(n+1)

\[ Catlan:f(n)=\frac{\left(2*n\right)!}{n!*\left(n+1\right)!} \]

问题三:火柴。用n(1<=n<=2000)根火柴棍能组成多少个非负整数

分析:令c[x]表示数字x需要的火柴数(0<=x<=9),用f[i]来更新f[i+c[x]](相当于在这个数的后面加上x这个数),当i等于0的时候不允许使用数字0,而是当n>=6时,给答案单独加上1,代表整数0。

d[i+c[x]]+=d[i];

问题四:立方数之和。

输入正整数n(n<=1e4),求将n写成若干个正整数的立方和有多少种方案。比如21有3种写法,77有22种写法,9999有440,022,018,293种写法

分析:建立多段图。设结点(i,j)表示“使用不超过i的大小的整数的立方,累加和为j”的这个状态,设d(i,j)为从(0,0)到(i,j)的路径条数,则最终的答案就是d(21,n)(因为21^3>n)
\[ d[i][j+a*i*i*i]+=d[i-1][j] \]
但是还可以再优化:
\[ d[i][j]+=d[i][j-i*i*i](类似完全背包) \]

问题五:村民排队。

村子里现在有n个人(1<=n<=40,000)个人,有多少种方式可以把他们排成一列,使得没有人站在他父亲的前面(有些人的父亲可能不在村子里面),输出总方案数模上1e9+7

问题六:带标号连通图计数。

统计有n(n<=50)个顶点的连通图有多少个。图的顶点有编号。

分析:在不考虑连通的情况的时候,这n个带标号的点共能构成
\[ h(n)=2^{\frac{n(n-1)}{2}} \]
张图(若考虑任意两点之间都有边,则共有(n-1)+(n-2)+...+1=n(n-1)/2条边,而每条边都有连或者不连的选择,所以是2^(n(n-1)/2)种,我们设连通的图为f(n),未连通的图共有g(n)张,则f(n)+g(n)=h(n)。

g(n)可以这样计算:设1所在连通分量有k个点,就有C(n-1,k-1)种情况。确定点集后,1所在连通分量有f(n)种情况,而其他连通分量有h(n-k)种情况,则:
\[ g(n)=\sum_{k=1}^{n-1}C(n-1,k-1)*f(k)*h(n-k) \]
每次计算出g(n)后,应立刻计算出f(n)和h(n)。

noip复习之数学(2)——递推关系

标签:play   其他   关系   递推   方案   输入   cat   数字   需要   

原文地址:https://www.cnblogs.com/iwillenter-top1/p/11616130.html

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