对递归进行优化--记忆化递归可以很方便的解决很多问题,让程序变得很简洁。但是,在递归解决问题的过程成,有时候会有很多重复计算,使得计算量很大,耗时很长。比如,使用递归求斐波那契数列。如果用普通的递归来解,当n值很大时,时间会很长而超时。如图,当n等于45时,需要运行5秒才能求出结果。分析一下,会是什么原因导致需要计算这么长时间呢?根据斐波那契数列的递推公式:fn=f(n-1)+f(n-2)f(n-
分类:
其他好文 时间:
2018-11-27 17:52:44
阅读次数:
180
问题描述 Fibonacci数列的递推公式为:Fn=Fn-1+Fn-2,其中F1=F2=1。 当n比较大时,Fn也非常大,现在我们想知道,Fn除以10007的余数是多少。 Fibonacci数列的递推公式为:Fn=Fn-1+Fn-2,其中F1=F2=1。 当n比较大时,Fn也非常大,现在我们想知道, ...
分类:
其他好文 时间:
2018-11-27 11:15:17
阅读次数:
174
嘟嘟嘟 这道题被评为紫题完全是在假(虽然我也跟风评了紫题),顶多黄题难度。 评黄题的主要原因是得知道约瑟夫递推公式,即fn = (fn - 1 +m) % n。表示n个人报数最后的获胜者,需要注意的是编号从0~n - 1,答案加1即可。 那么这道题就是枚举m,然后O(n)代入公式验证,总复杂度O(T ...
分类:
其他好文 时间:
2018-11-13 00:14:22
阅读次数:
185
[toc] LCG算法 LCG(linear congruential generator)线性同余算法,是一个古老的产生随机数的算法。由以下参数组成: 参数|m|a|c|X | | | | 性质 |模数|乘数|加数|随机数 作用 |取模|移位|偏移|作为结果 LCG算法是如下的一个递推公式,每下一 ...
分类:
编程语言 时间:
2018-11-11 17:18:34
阅读次数:
533
一看就是用dp来做,但是这道题还是有点意思的。 dp[i] = sum_{coin} dp[i-coin] 上述的递推公式看似很对,但是会把重复的情况都考虑进去。举个例子,算dp[5]的时候,dp[5]=dp[0]+dp[4]+dp[3],但是之前算的dp[4]就是从dp[3]计算得到的。 解决办法 ...
分类:
其他好文 时间:
2018-11-09 22:52:32
阅读次数:
228
矩阵快速幂的用途主要是用来递推公式。主要过程是构造一个系数矩阵A和一个值的矩阵B,令(A^k)×B的值与第k项正好相等或是相关。 模板的话差不多都是一样的,只不过是把对数的快速幂拓展到了对矩阵的快速幂。这个模板里面用的是静态的矩阵,速度稍微会 快一点。 #include <cstdio> #incl ...
分类:
其他好文 时间:
2018-10-04 20:28:09
阅读次数:
192
今天上课讲了一些数论,本蒟蒻并没有听懂,于是只好写一个斐波那契数的总结来弥补一下啦qwq。 首先来了解一下斐波纳契数列的定义 设斐波纳契数列的第i项是F(i),斐波那契数列的递推公式可以写成F(i)=F(i 1)+F(i 2) (i 2),F(1)=1,F(2)=1。 通项公式的话 ,把ai改成Fi ...
分类:
其他好文 时间:
2018-10-04 10:44:30
阅读次数:
113
倍增 线性倍增 预处理 $f[i][j]$表示从$i$开始的 长度为$2^{j}$ 的区间(即区间$[i, i+2^{j} 1]$) 递推公式(j在外层递增): $f[i][j]=max\{f[i][j 1], f[i+2^{j 1}][j 1]\}$ 即将区间$[l, r]$分为两个区间合并 查询 ...
分类:
其他好文 时间:
2018-10-02 22:19:39
阅读次数:
192
算出来每个数被计算答案的期望次数就可以 考虑这个次数,我们可以把一次合并反过来看,变成把一个数+1然后再复制一个 记f[i][j]为一共n个数时第j个数的期望次数,就可以得到期望的递推公式,最后拿f[N]乘一乘就行了 要注意每一位的期望次数是不一样的..不存在什么中间的次数一样之类的... ...
分类:
其他好文 时间:
2018-10-01 20:45:52
阅读次数:
203
Given a string s, find the longest palindromic substring in s. You may assume that the maximum length of s is 1000. Example 1: Example 2: DP的做法,递推公式: ...
分类:
其他好文 时间:
2018-09-23 18:08:16
阅读次数:
203