卡塔兰数,是组合数学中一个常出现在各种计数问题中出现的数列。输入一个整数n,计算h(n)。h(n)= h(0)*h(n-1)+h(1)*h(n-2) + ... + h(n-1)h(0) (其中n>=2,h(0) = h(1) = 1)该递推关系的解为:h(n)=C(2n,n)/(n+1) (n=1...
分类:
其他好文 时间:
2015-06-09 15:39:04
阅读次数:
138
题目链接:http://acm.acmcoder.com/showproblem.php?pid=4405
题意:棋子,从0到n,置骰子,置到几就往前走几步,前进中会有捷径,比如2和5连到一起了,那你走到2时可以直接跳到5,如果5和8连到一起了,那你还可以继续跳到8,最后问跳到n时平均置几次骰子。也就是求期望。
解法:普通概率DP,dp[n] == 0 ;向前递推。
代码:#include <...
分类:
其他好文 时间:
2015-06-09 11:48:52
阅读次数:
159
记录点滴。 1 /* 2 2015.6 HT 3 ACM Work_4 4 5 */ 6 #include 7 #include 8 using namespace std; 9 10 /* 11 超级楼梯 12 一楼梯共M级,刚开始在第一级,每次只能跨上一级或二级 1...
分类:
其他好文 时间:
2015-06-08 23:10:53
阅读次数:
336
现实问题中有一类问题适宜用动态规划的思想去解决,这类问题有个显著特征就是求“最大xxx”、“最小xxx”,也就是求一个优化问题的解。通常这类问题都能够找到一个递归定义的递推公式,而能否高效地优雅地用动态规划解决问题的关键就在于这个递推公式的发现和定义。 尽管递推公式是按照递归的形式定义的,但实现上尽...
分类:
其他好文 时间:
2015-06-08 22:54:57
阅读次数:
111
学了一发LCA的倍增算法+跳表维护。先说说LCA倍增算法,思路是fa[i][j]求的是i结点的2^j倍的祖先,其中2^0就是父结点了。所以可以递推fa[i][j]=fa[fa[i][j-1]][j-1]。当求LCA时,设深度u>v,则先倍增把u提到v的同等深度,若u==v,lca就是u,否则,两点同...
代码:
#include
#include
#define N 1000
#define mod 1000000007
using namespace std;
long long dp[N+5];
int main()
{
dp[1]=2;
dp[2]=3;
for(int i=3;i<=N;i++)
{
dp[i]=(dp[i-1]%mod...
分类:
其他好文 时间:
2015-06-07 23:40:54
阅读次数:
311
十进制快速幂+矩阵乘法+常数优化 听说这题还可以强行算出来递推式……然后乘乘除除算出来…… 然而蒟蒻选择了一个比较暴力的做法= = 我们发现这个递推的过程是线性的,所以可以用矩阵乘法来表示,$x=a*x+b$这样一个递推式我们可以这样表示:$$\begin{bmatrix} x& 1 \end...
分类:
其他好文 时间:
2015-06-07 17:17:31
阅读次数:
123
1、递推法递推算法使用“步步为营”的方法,不断利用已有的信息推导出新的东西。(1)顺推法是指从已知条件出发,逐步推算出要解决问题的方法。例如:斐波拉契数列就可以通过顺推法不断递推算出新的数据。 1 /**************************************************...
分类:
编程语言 时间:
2015-06-07 17:05:29
阅读次数:
136
KMP算法 其实就像题面描述的那样……主要还是KMP算法的基础上搞一些DP(递推)之类…… 随便yy一下就可以得到50分了,因为num数组跟next的关系还是很密切的…… f[i]=f[next[i]]+1; 然后取 t=next[i]; while(t*2>i) t=next[t...
分类:
其他好文 时间:
2015-06-06 23:30:31
阅读次数:
108
题目意思:求解一个数组的所有子集,子集内的元素增序排列eg:[1,3,2] result:[],[1],[2],[1,2],[3],[1,3],[2,3],[1,2,3]思路:这是一个递推的过程 [] []+[1] [2]+[1,2]+[]+[1] 第k项的子集为第k个数...
分类:
其他好文 时间:
2015-06-06 11:46:44
阅读次数:
94