11 2015 档案
摘要:无权边单源最短路径相对来说比较简单,边数就是路径长度。从出发点开始,先收集路径为0顶点(它本身),然后收录他的邻顶点(路径为1),再依次收录长度为2,3,4....。整个过程其实就是一个广度优先搜索(BFS),但是需要做些改变,需要一个数组d[w]来记录顶点w到源点s的路径长度,开始时要将d[w...
阅读全文
摘要:一道DP题,按照一个法则来生成一系列数,初始数是1.任意的第i个数可以看成是在i以前的数*2,*3,*5,或*7得到的,因为是按照从小到大的顺序生成的,于是DP[i]=min{2*DP[p1],3*DP[p2],5*DP[p3],7*DP[p4]};p1,p2,p3,p4分别表示用*2,*3,*4...
阅读全文
摘要:给出一串数,如何来构造一颗完全二叉搜索树。我们了解完全二叉搜索树的定义,就不多说。接下来我们需要用一种数据结构来储存,一般使用线性表或者链表来储存一颗树,对于完全二叉树而言,用数组储存的优势高于用链表储存,对于线性表储存完全二叉数,不用担心空间的浪费,也容易操作。于是我们就选择线性表来储存。对...
阅读全文
摘要:提交啦n次一直WA,这个bug找啦几个小时,最终才发现数组开小啦,真是遗憾。这是一个典型的DP问题,题目要求从n个中选出k对使得最终疲劳度最小。首先对物品质量a[n]进行一次排序,用dp[i][j]表示从前i个物品中选取j对物品的最小疲劳度,现在我们来探讨状态转移方程,对于第i个物品,我们有选和...
阅读全文
摘要:题目在:http://acm.hdu.edu.cn/diy/contest_showproblem.php?pid=1010&cid=11785 仔细分析题目,豆子都在m*n的矩阵中,假设我要选取m[i][j]处的豆子,那么一定不会选取第i-1行和i+1行的豆子,为啦使得最终获得分数最高,既然选...
阅读全文
摘要:一开始把题目意思理解错啦,做那好久没做出来。本题是一个dp问题;题目说列可以无限次对换,设矩阵为M[i][j],要找到面积大的矩形其实就是处理连续1的个数问题,用d[i][j](i表示行,j表示列)表示第i行从元素M[i][j]按列向下连1的个数,然后数组d[i]表示啦第i行向下连续1的个数的集...
阅读全文
摘要:这是一个矩阵的动态规划,与数塔问题类似。位置k和时间t是两个变量,假设在第t秒人·的位置在k处,用m[k][t]表示第t秒在位置k处人获得的最大饼的数量,那莫考虑考虑t-1秒时候人的位置k可以在k-1,k,k+1三个位置(当k=0或者k=10时候特殊处理)于是得到状态方程:m[i][j]=ma...
阅读全文
摘要:解法一 此题是一个简单的动态规划问题,用dp[i]记做最后一步经过第i个数所得到的最大sum值,则结果=max(dp[i]),i=1,...n.考虑dp[i]的前一步会经过那里?假设dp[i]的前一步经过第j个数,则子问题dp[j]满足最优子结构。dp[i]=a[i]+max(dp[j]) .(a[
阅读全文
摘要:问题描述:假设公司出售长度为i的钢条价格为pi,如下价格表:长度i12345678910价格pi1589101717202430 给一个n长度钢条和一个价格表,求切割方案使得总收益最大。分析:当问题长度为n时候,每隔一米有两种选择(切或者不切),从而切割方案有2n种,如果用暴力来求解,复杂度会达到...
阅读全文
摘要:动态规划与分治法类似,都是构造子问题的解来求解原问题,但是与分治法不一样的是,分治法求解的是不重叠的子问题,而动态规划恰好是解决重叠子问题,如果用分治法来解决,将会反复求解子问题,使得计算效率极低,对于重叠子问题,动态规划只需要将子问题求解一遍将其记录在一表格中,需要时调用即可,这样提高了时间...
阅读全文

浙公网安备 33010602011771号