类似于最优矩阵链乘,将长区间划分成段区间求解,换句话说:长区间依赖于段区间 。 因此如果利用二重循环递推的话,枚举的顺序应该是木棍的长度从小到大,因为长区间依赖于短区间的最优解 。 所以动态规划的重点我认为就是对状态的定义和动态规划的方向, 状态的定义要确保覆盖所有状态,规划的方向要遵循一个状态依赖于另一个早已解决的状态。 所以该题有两种解决方法:记忆化搜索和递推 。
我分别用这两种方...
分类:
其他好文 时间:
2015-07-12 14:21:36
阅读次数:
226
和上一题 “照明系统设计”类似,我们可以逐步递推出最优解,d[i] 表示1~i个字符的最优解,那么d[i] = min(d[i],d[j] + 1)|当s[j+1~i]为回文串时。
大家可以自行打印d这个数组,来体会一下状态的转移情况。
代码如下:
#include
using namespace std;
const int maxn = 1000 + 10;
const int INF ...
分类:
其他好文 时间:
2015-07-11 16:46:42
阅读次数:
121
该题以电压v,使得枚举有序化,对于每一种灯泡,怎么判断是不是要用它呢? 如何形成递推呢?
我们知道,递推就是要用到之前早已存好的值来确定当前最优解,所以我们用d[i]表示用1~i种灯泡的最小费用。
由于每种灯泡要么使用,要么被别的灯泡替代,所以d[i] = min(d[i],d[j] + (s[i]-s[j])*a[i].c + a[i].k); 其中j
由于第n个灯泡电压最高,无法被...
分类:
其他好文 时间:
2015-07-11 13:42:01
阅读次数:
110
自己花了两个小时A出来的感觉就是不一样啊,学习DP建议大家多煎熬一点,好好思考状态是如何转移的。
不过这道题我一开始理解错题意了,不然也不会浪费这么长时间 。 一开始以为是背包问题,后来才发现要求使得唱的曲目尽量多,在此前提下尽量晚离开KTV,我恰好弄颠倒了。
这样我们就不难得出递推方程 : 因为每首曲目只能唱一遍,所以这就使递推变得有序了~ 那么我们设cnt[i][j]表示唱前i首歌中的若干...
分类:
其他好文 时间:
2015-07-11 12:12:27
阅读次数:
102
转移很好用矩阵表示.然而矩阵乘法复杂度是O(n^3)的.
很容易发现转移矩阵是【循环矩阵】.而且有一个美妙的性质:【循环矩阵 * 循环矩阵 = 循环矩阵】.
所以我们计算矩阵乘法的时候可以只计算第一行.剩下的可以由第一行递推得出.
一次乘法的复杂度降到了O(n^2).这是可以接受的.
#include
#include
#include
#include
#incl...
分类:
其他好文 时间:
2015-07-11 09:13:53
阅读次数:
126
最近准备进入动态规划的章节,仔细看了看紫书上对01背包的讲解,感觉很好。。之前看《挑战程序设计竞赛》那本书,就没有讲的那么深刻 。 更加深刻的理解了什么叫记录结果再利用,手工操作了一遍01背包的过程,也有点明白它的状态是如何转移的了,而且那个状态方程所构成的递推关系真的很巧妙 。
言归正传。。这道题就是嵌套矩形问题稍微改了一下,之前的嵌套矩形只需要维护一个状态量就行了,但是这道题是立方...
分类:
其他好文 时间:
2015-07-10 22:21:49
阅读次数:
213
BigDecimal类
java.math.BigDecimal
用来处理高精度计算。可存浮点数。对应的整型类为BigInteger
几个比较重要的函数:
BigDecimal add(BigDecimal augend) :加法
BigDecimal subtract(BigDecimal subtrahend) :减法
BigDecimal divide(BigDe...
分类:
其他好文 时间:
2015-07-10 15:23:13
阅读次数:
221
问题描述一个台阶有n级,一次可以跳1级或者2级。问共有多少种跳法?分析算法的时间复杂度。解决思路假设f(n)代表n级台阶的跳法数目,其递推式如下:当n=1时,f(n)=1;当n=2时,f(n)=2;其他,f(n)=f(n-1)+f(n-2)那么有如下几种解决方法:1. 递归,指数级时间复杂度;2. ...
分类:
其他好文 时间:
2015-07-10 11:10:44
阅读次数:
110
Synopsys Hspice vK-2015.06.Linux32_64 2CD高精度电路仿真 HSPICE采用了最精确的、经过验证的集成电路器件模型库和先进的仿真和分析算法,提供了一个高精度的电路仿真环境。 随着集成电路的几何尺寸不断变小,对高精度电路仿真器的需求也更加迫切。现在的设计者需要一个...
分类:
系统相关 时间:
2015-07-10 11:08:43
阅读次数:
240
一开始自己搞,写了半天还是成了四重循环,虽然没个循环依次递减,而且二分查找,但是依然超时,唉,看来还是太弱啊,思路过于单一。
搜了一个题解,是用递推构造了两个二维数组,利用题目的特点维护了两个变量,然后只需要枚举q和r就可以了。
l[i][j]表示下标小于j且值比a[i]大的数中最小的值的下标。 r[i][j]表示下标大于j且值比a[i]小的数中最大的值的下标。
我们枚举q和r ,那么显然可...
分类:
其他好文 时间:
2015-07-09 21:30:58
阅读次数:
149