【总结】《算法设计与分析》第三章动态规划

来源:互联网 发布:什么叫非农数据分析 编辑:程序博客网 时间:2024/06/11 06:10

第 3章  动态规划 习题总结

算法实现题 3-0 独立任务最优调度问题 

{<f[i,j]=min{f[i-1,j]+b[i],f[i-1,j-a[i]}前i个任务A机器做功j时间,B机器做功最短时间。ans=min{f[n,i]+i}可降维>}

算法实现题 3-1 最少硬币问题 

{<f[i,j]=min{f[i-1,j-k*time[i]]+k,f[i-1,j]}前i个硬币组成j钱时所用的最少硬币数。可降维>}

算法实现题 3-2 序关系计数问题 

{<f[i,j]=(j+1)*(f[i-1,j]+f[i-1,j-1])前i个数中有j个'<'号的方案数,j+1表示前i个数中被'<'分成j+1个集合,新插入的数所放位置而构成方案数。可降维>}

算法实现题 3-3 多重幂计数问题 

{<f[i]=∑(0<=j<i)(f[j]*f[i-j-1])Catalan数,百度百科有Catalan数应用,其中就有这个模型不再啰嗦证明>}

算法实现题 3-4 编辑距离问题 

{<f[i,j]=min{f[i-1,j],f[i,j-1],f[i-1,j-1]}+1,s1前i个字符s2前j个字符匹配的最小编辑距离。预处理f[i,0]、f[0,i]>}

算法实现题 3-5 石子合并问题 

{<f[i,j]=min{f[i,k]+f[p,j-1]+sum[i,(i+j-2)mod n+1](2<=j<=n,1<=i<=n,1<=k<=j-1,p=(i+k-1)mod n+1)},前i个石子合并j次的最小合并/最大合并,环>}

算法实现题 3-6 数字三角形问题 

{<f[i,j]=max{f[i-1,j],f[i-1,j-1]}+a[i,j] 走到第i行j列时的最优值,可倒着来>}

算法实现题 3-7 乘法表问题 

{<区间dp,f[l,r,num]=f[l,r,num]+dp(l,i,x1)*dp(i+1,r,x2) l到r间得到的num是从l到i的num*从i+1到r的num得到的。递归版>}

算法实现题 3-8 租用游艇问题 

{<类似floyd,f[i,j]=min{f[i,k]+f[k,j],f[i,j](i<k<j)} i到j的最短费用是之际到达或者经由k而产生的>}

算法实现题 3-9 汽车加油行驶问题 

{<spfa或者dp,四个方向,有油没油。>}

算法实现题 3-10 最小 m段和问题 

{<二分答案+贪心验证>}

算法实现题 3-11 圈乘运算问题 
算法实现题 3-12 最大长方体问题 {<三维转二维,二维转一维然后求最长连续序列和,复杂问题简单化>}

算法实现题 3-13 正则表达式匹配问题 

{<先讨论*再讨论?再讨论其他>}

算法实现题 3-14 双调旅行售货员问题 

{<t[i]=min{t[j]+s[i]+s[j]-2*s[j]+dist[i,j],t[i]}>}

算法实现题 3-15 最大 k乘积问题 

{<先预处理每段数字然后f[i,j]=max{f[i-p,j-1]*a[i-p+1,i],f[i,j]}前i个数字j个乘号的最大值。>}

算法实现题 3-16 最少费用购物 
算法实现题 3-17 收集样本问题 

算法实现题 3-18 最优时间表问题 

{<尼克的任务,f[i]=max{f[i],f[a[k].st+a[k].ed]}/f[i]=f[i+1]+1 先按开始时间排序,然后倒着枚举相同开始时间的逐个比较,不同的+1,最后输出n-f[1]>}

算法实现题 3-19 字符串比较问题 

{<类似于编辑距离,f[i,j]=min{f[i-1,j]+k,f[i,j-1]+k,f[i-1,j-1]+dist(i,j)} s1前i个字符s2前j个字符的最短扩展距离>}

算法实现题 3-20 有向树 k中值问题 

{<f[i,j,k]=min{f[tree[t].child,j,k]+d,f[tree[t].child,i,k-1]} 大概就这个意思,转二叉然后树型dp>}

算法实现题 3-21 有向树独立 k中值问题 

{<修改320的话,过了14个,不知正确解>}

算法实现题 3-22 有向直线 m中值问题 

{<修改320的话超内存,写直线的吧超时间。。纠结着>}

算法实现题 3-23 有向直线 2中值问题 

{<把322中的m改成2,貌似有更优解>}

算法实现题 3-24 树的最大连通分支问题 
算法实现题 3-25 直线 k中值问题 
算法实现题 3-26 直线 k覆盖问题 
算法实现题 3-27 m处理器问题 
算法实现题 3-28 红黑树的红色内结点问题
原创粉丝点击