经典的动态规划,LRJ神牛的书上经典例题第一题。

开一个三维数组,f[i][j][k]表示将i~j这一段,连上后面的k个格子全部消去所能够获得的最大价值。

状态转移方程:

f[i][j][k]=Max{

          Max{f[i][p][len[j]+k]+f[p+1][j-1][0]}(color[p]=color[j] and i<p<j)//和前面某段一起消掉

          f[i][j-1][0]+sqr(len[j]+k)//马上消掉这一段

       }

其中,len[i]表示第i段连续区间的长度,比如说样例1中的len值分别为1,4,3,1

代码很简单:

Program POJ1390;//By_Thispoet
Constmaxn=200;
Vari,j,k,m,n,l,r,p,o,q                      :Longint;f                                      :Array[0..maxn,0..maxn,0..maxn]of Longint;len,color,maxr,rep                        :Array[1..maxn]of Longint;rpos                                  :Array[1..maxn]of Integer;rec                                       :Array[1..maxn,0..maxn]of Longint;Function Max(i,j:Longint):Longint;
beginif i>j then exit(i);exit(j);
end;BEGINreadln(o);q:=o;while o>0 dobegin   n:=0;l:=0;fillchar(rpos,sizeof(rpos),0);fillchar(rec,sizeof(rec),0);fillchar(len,sizeof(len),0);readln(r);for i:=1 to r dobeginread(m);if l=m then inc(len[n]) elsebegininc(n);inc(rec[m,0]);rec[m,rec[m,0]]:=n;rep[n]:=rec[m,0];color[n]:=m;len[n]:=1;end;l:=m;end;for i:=n downto 1 dobeginmaxr[i]:=rpos[color[i]];inc(rpos[color[i]],len[i]);end;//preparefillchar(f,sizeof(f),0);for i:=1 to n dofor k:=0 to maxr[i] dof[i,i,k]:=sqr(len[i]+k);for j:=1 to n-1 dofor i:=1 to n-j dofor k:=0 to maxr[i+j] dobeginf[i,i+j,k]:=f[i,i+j-1,0]+sqr(len[i+j]+k);l:=rep[i+j]-1;while l>0 dobeginp:=rec[color[i+j],l];if p<i then break;f[i,i+j,k]:=Max(f[i,i+j,k],f[i,p,k+len[i+j]]+f[p+1,i+j-1,0]);dec(l);end;end;writeln('Case ',q-o+1,':',' ',f[1,n,0]);dec(o);end;END.

转载于:https://www.cnblogs.com/Thispoet/archive/2011/10/03/2198448.html

POJ1390 Blocks——动态规划——pku1390相关推荐

  1. Blocks(poj 1390) 动态规划 方盒游戏 (升维——三维)

    Blocks  点击转到 Time Limit: 5000MS   Memory Limit: 65536K Total Submissions: 6197   Accepted: 2557 Desc ...

  2. 100道动态规划——34 UVA 10559 Blocks 状态的定义 状态转移方程

    好吧,我想到的是枚举决策... 居然是个类似于区间DP的感觉.恩..确实是呀,只不过是需要在DP的时候附加上额外的条件 定义状态dp[i][j][k]表示区间i~j且右边附加了k个与j同色的方块的最大 ...

  3. 0x53. 动态规划 - 区间DP(习题详解 × 8)

    整理的算法模板合集: ACM模板 点我看算法全家桶系列!!! 实际上是一个全新的精炼模板整合计划 文章目录 0x53. 动态规划 - 区间DP Problem A. 最优矩阵链乘 Problem B. ...

  4. HDU 1069 Monkey and Banana 最长上升子序列进阶(动态规划)

    HDU 1069(动态规划) Monkey and Banana Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K ...

  5. UVA 10559 Blocks 方块消除

    [分析] 为了叙述方便,设左数第i个方块的颜色为A[i].按照线性结构动态规划的常见思路,设d(i,j)表示子序列i-j的最大得分,但是似乎无法用d(i,k)和d(k,j)来计算d(i,j),因为可能 ...

  6. POJ 2152 fire / SCU 2977 fire(树型动态规划)

    POJ 2152 fire / SCU 2977 fire(树型动态规划) Description Country Z has N cities, which are numbered from 1 ...

  7. 动态规划常见类型总结

    本文针对动态规划的常见类型进行总结.虽说总结的是动态规划,但顺便把递推也放了进来.严格来说,递推不属于动态规划问题,因为动态规划不仅有递推过程,还要有决策(即取最优),但广义的动态规划是可以包含递推的 ...

  8. 动态规划详解 转自瞿老师的博客

    目录     一.动态规划初探       1.递推       2.记忆化搜索       3.状态和状态转移       4.最优化原理和最优子结构       5.决策和无后效性   二.动态规 ...

  9. LeetCode刷题:741. Cherry Pickup —摘樱桃 动态规划

    LeetCode刷题:741. Cherry Pickup -摘樱桃 动态规划 原题链接:https://leetcode.com/problems/cherry-pickup/ In a N x N ...

最新文章

  1. 【Web安全】DVWA+CSRF跨站请求伪造-生成链接修改password
  2. Ubuntu13.10下编译安装opencv2.4.9
  3. android 系统亮度,android 设置系统屏幕亮度
  4. java父类shape_java父类为抽象类,子类构造方法传参
  5. navicat连接oracle 报 ORA-12737 set CHS16GBK
  6. OpenCV--cvScaler颜色赋值
  7. spring boot 集成 Oracle Access Manager(OAM)单点登录
  8. Git 基础(八)—— Github 的使用(账号管理)
  9. CodeWithMosh--mysql 学习笔记(3)
  10. 如何在Sitecore CMS中打开内容编辑器
  11. 【转】opengl的一些小问题
  12. mapreduce实现矩阵相乘
  13. 中国物联网发展年报出炉
  14. python飞机订票系统
  15. 计算机扫描服务开启,扫描系统(window怎么开启扫描服务)
  16. 关于win10无法正常关机
  17. MySql高级索引、事务
  18. 使用express+vue在网页上显示RTSP流视频
  19. Javascript 获得当前文件的url 目录,不含文件名
  20. Java: Tomcat到底是干嘛的?

热门文章

  1. Metadata Service 最高频的应用 - 每天5分钟玩转 OpenStack(164)
  2. 单片机小白学步系列(一) 单片机的前世今生
  3. swoolephp加密_PHP中给源代码加密的几种方法
  4. (包含重力矢量)Pygame粒子模拟
  5. sql server numeric 可存几位小数_想成为优秀SQL高手?你就差这些细节
  6. date时区 es logstash_elastic date时区问题解决办法
  7. iis7设置html支持asp,Win7下启用IIS7配置ASP运行环境的详细方法
  8. c# mongodb or查询_C# MongoDB 查询方法
  9. cpu开机就是60℃_铅锤哥:十五种电脑开机黑屏的原因与解决思路
  10. MSN8.0经常出现连接错误,如何解决?