题目: 给出一个斐波那契数字的前缀,问第一个有这个前缀的数字在斐波那契数列中是第几个。 思路: 紫书提示:本题有一定效率要求。如果高精度代码比较慢,可能会超时。 利用滚动数组和竖式加法来模拟斐波那契相加的过程,在这个过程中每得出一个斐波那契数字就用字典树存一下。 PS:在滚动数组中存的斐波那契数字是 ...
分类:
其他好文 时间:
2019-01-18 00:59:22
阅读次数:
342
还是线性dp,有点感觉了,另外这个问题也可以用滚动数组 ...
分类:
其他好文 时间:
2019-01-03 16:41:01
阅读次数:
205
要把一个序列变成一个不严格的单调序列,求最小费用 可以用滚动数组实现,空间省了许多 ...
分类:
其他好文 时间:
2019-01-03 14:57:41
阅读次数:
117
这道题用滚动数组比较好写。dp[i]表示当前字母不形成hard前i个字母组成的子串的最小代价。每次更新dp[i],考虑两种情况,第一种是当前可能放在hard的第i个字母上,那么我们更新dp值为dp[i]+a[i];第二种是前i-1个字母都没有构成的最小代价,用dp[i-1]更新,两者取最小值 ...
分类:
其他好文 时间:
2018-12-29 19:36:04
阅读次数:
220
这题真不错,需要三维dp,转移方程为我好久才想出来。 然后发现数组开不下…… emmm…… 于是乎我看了题解,才想起来我会滚动数组,,,qwq 这道题的关键就是,对于这个第 i 位是和上一个合并还是单独新开一个串,那么对于上述两种情况,就要对应必须选第 i 个或者第 i 个可选可不选(即现有最优解) ...
分类:
其他好文 时间:
2018-12-16 11:05:02
阅读次数:
102
emmmmmm 看到这道题的第一反应嘛 (区间最小,大概是RMQ吧 然后,华丽丽的80分 (题解说st表会T两个点,可是我是MLE emmmm。。。 貌似st表不能做,有一个滚动数组的优化,可以看看题解学一下 这里我改用了单调队列的做法 (本来用的STL的队列,但是学长说不方便,开一个数组即可 [而 ...
分类:
其他好文 时间:
2018-12-03 21:39:53
阅读次数:
191
题面 "传送门" 分析 考虑DP 设$dp[i][j]$表示前i个数选出的序列长度为j的方案数 状态转移方程为: $$ dp[i][j]= \begin{cases}dp\left[ i 1\right] \left[ j 1\right] +dp\left[ i 1\right] \left[ j ...
分类:
编程语言 时间:
2018-11-24 22:28:42
阅读次数:
321
传送门 突然想起第一次讲课的时候说错了floyd的事... 当时LZY还在然后被直接打脸就很爽 也不知道这一次自己能不能剩下来 又会有多少人走掉 这题利用了floyd的滚动数组优化掉的那一维 也就是f[k][i][j]表示中间点仅有前k个时i->j的最短路 所以按时间排序直接做floyd 然后如果有 ...
分类:
其他好文 时间:
2018-11-08 16:25:15
阅读次数:
105
这是一道比较综合的动态规划问题。 首先,根据题目中的从N个人中选出M个人,并且要使得某个目标函数最优,可以想到是背包问题,且因为要取出M个人,人数也应该作为背包体积的一个维度。 其次,要求输出路径,因此不能进行滚动数组优化(优化后无法记录状态转移途径)。 再次观察要求最优的函数,是一个相减取绝对值的 ...
分类:
其他好文 时间:
2018-10-18 16:52:27
阅读次数:
117
说来惭愧,我老早以前就学习了dp,可直到最近才知道滚动数组。 所以说,滚动数组是什么呢? 它是一种优化dp空间复杂度的思想。 在dp转移时,我们往往不需要之前推的所有的,而是只需要前一两个转移的。 我们以斐波那契数列为例,代码如下: 可以发现,如果求解99位,那么需要使用将近快100个存储单元。 如 ...
分类:
编程语言 时间:
2018-10-16 22:04:23
阅读次数:
350