动态规划及其优化.pptVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
动态规划及其优化

(7).石子合并 由刚才的四边形不等式定理,可以看出题的w满足w(i,j)+w(i’,j’)=w(i’,j)+w(i,j’), 满足四边形不等式。 因此最佳决策的范围存在单调性: s(i,j)=s(i,j+1)=s(i+1,j+1) 于是方程变为: f[i,j]=min(f[i,k]+f[k+1,j]+w[i,k]+w[k+1,j]) (s(i,j-1)=ks(i+1,j)) 其时间复杂度仅有O(N^2) (7).石子合并 for delta=1..n-1 for i=1..n-delta j=i+delta; for k=s(i,j-1)..s(i+1,j) if f[i,j]f(i,k)+f(k+1,j) f(i,j)=f(i,k)+f(k+1,j) ; s(i,j)=k; f(i,j)=f(i,j)+sum[j]-sum[i-1]; 在一些无法有效地减少状态冗余的题目中,往往状态之间转移所消耗的时间可以优化的。 很直接的例子就是在关于字符串匹配的DP中,通过建立一个字母索引快速找到符合要求的字符串。 区间内最值 位运算 状态压缩 RMQ HASH 平衡二叉树,线段树,树状数组 减少状态转移的时间 (8).架设电话线 题目大意:两种操作:将电线杆升高x,花费x^2,在相邻两个电线杆上连接电线,为高度差delta*Cost,求链接电线最少的花费。 (2 = N = 100,000) (1 = height_i = 100) (8).架设电话线 F[i,j] 表示第i根电线杆高度为j的最少花费。 F[i,j]=min(f[i-1,k]+|j-k|*Cost)+(j-A[i])^2 时间复杂度 优化势在必行 O(N*H^2) (8).架设电话线 F[i,j]=min(f[i-1,k]+|j-k|*Cost)+(j-A[i])^2 1. j=k f[i,j]=min(f[i-1,k]+j*cost-k*cost)+(j-a[i])^2 f[i,j]=min(f[i-1,k]-k*cost)+j*cost+(j-a[i])^2 2. jk f[i,j]=min(f[i-1,k]-j*cost+k*cost)+(j-a[i])^2 f[i,j]=min(f[i-1,k]+k*cost)-j*cost+(j-a[i])^2 Min(F[i-1,K]+-K*Cost) 可以在预处理中算出这一部分! (8).架设电话线 分别对于j=k,jk的两种情况,Min(F[i-1,K]+-K*Cost) 可以用正推和逆推两种方式分别求出。 设定high[j]表示j..maxh中min(F[i-1,K]+K*Cost) low[j]表示1..j中min(F[i-1,K]-K*Cost) f[i]=min(high[j]-j*Cost,low[j]+j*cost) +(a[i]-j)^2 时间复杂度 O(NH) (8).架设电话线 for i=1..n bes=max; for j=maxh..1 bes=min(bes,f[i-1,j]+cost*j); f[i,j]=bes-cost*j+(a[i]-j)^2; bes=max; for j=1..maxh bes=min(bes,f[i-1,j]-cost*j); f[i,j]=min(bes+cost*j+(a[i]-j)^2,f[i,j]); for j=1..a[i] f[i,j]=max; (9).土地 题目大意:一个(m*n)的矩阵,一些方格不能种玉米,不能在相邻的地方种玉米,不种玉米也算一种方案,问种玉米的方案数。(m,n=12) Sample Input 2 3 1 1 1 0 1 0 Sample Output 9 将能种玉米的地方编号 1 2 3 4 ? 种在一个格子: (1, 2, 3, 4) 种在两个格子: (13, 14, 34) 种在三个格子: (134) 总共:4+3+1+1(不种玉米)=9. (9).土地 简化问题——先行再列。 定义sta[i]为一个boolean数组,表示一行的状态,sta[I,j]表示第i行第j个是否中了玉米。 首先满足行的关系——相邻不

文档评论(0)

yan698698 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档