POJ1390 Blocks——动态规划——pku1390
经典的动态规划,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相关推荐
- Blocks(poj 1390) 动态规划 方盒游戏 (升维——三维)
Blocks 点击转到 Time Limit: 5000MS Memory Limit: 65536K Total Submissions: 6197 Accepted: 2557 Desc ...
- 100道动态规划——34 UVA 10559 Blocks 状态的定义 状态转移方程
好吧,我想到的是枚举决策... 居然是个类似于区间DP的感觉.恩..确实是呀,只不过是需要在DP的时候附加上额外的条件 定义状态dp[i][j][k]表示区间i~j且右边附加了k个与j同色的方块的最大 ...
- 0x53. 动态规划 - 区间DP(习题详解 × 8)
整理的算法模板合集: ACM模板 点我看算法全家桶系列!!! 实际上是一个全新的精炼模板整合计划 文章目录 0x53. 动态规划 - 区间DP Problem A. 最优矩阵链乘 Problem B. ...
- HDU 1069 Monkey and Banana 最长上升子序列进阶(动态规划)
HDU 1069(动态规划) Monkey and Banana Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K ...
- UVA 10559 Blocks 方块消除
[分析] 为了叙述方便,设左数第i个方块的颜色为A[i].按照线性结构动态规划的常见思路,设d(i,j)表示子序列i-j的最大得分,但是似乎无法用d(i,k)和d(k,j)来计算d(i,j),因为可能 ...
- POJ 2152 fire / SCU 2977 fire(树型动态规划)
POJ 2152 fire / SCU 2977 fire(树型动态规划) Description Country Z has N cities, which are numbered from 1 ...
- 动态规划常见类型总结
本文针对动态规划的常见类型进行总结.虽说总结的是动态规划,但顺便把递推也放了进来.严格来说,递推不属于动态规划问题,因为动态规划不仅有递推过程,还要有决策(即取最优),但广义的动态规划是可以包含递推的 ...
- 动态规划详解 转自瞿老师的博客
目录 一.动态规划初探 1.递推 2.记忆化搜索 3.状态和状态转移 4.最优化原理和最优子结构 5.决策和无后效性 二.动态规 ...
- LeetCode刷题:741. Cherry Pickup —摘樱桃 动态规划
LeetCode刷题:741. Cherry Pickup -摘樱桃 动态规划 原题链接:https://leetcode.com/problems/cherry-pickup/ In a N x N ...
最新文章
- 【Web安全】DVWA+CSRF跨站请求伪造-生成链接修改password
- Ubuntu13.10下编译安装opencv2.4.9
- android 系统亮度,android 设置系统屏幕亮度
- java父类shape_java父类为抽象类,子类构造方法传参
- navicat连接oracle 报 ORA-12737 set CHS16GBK
- OpenCV--cvScaler颜色赋值
- spring boot 集成 Oracle Access Manager(OAM)单点登录
- Git 基础(八)—— Github 的使用(账号管理)
- CodeWithMosh--mysql 学习笔记(3)
- 如何在Sitecore CMS中打开内容编辑器
- 【转】opengl的一些小问题
- mapreduce实现矩阵相乘
- 中国物联网发展年报出炉
- python飞机订票系统
- 计算机扫描服务开启,扫描系统(window怎么开启扫描服务)
- 关于win10无法正常关机
- MySql高级索引、事务
- 使用express+vue在网页上显示RTSP流视频
- Javascript 获得当前文件的url 目录,不含文件名
- Java: Tomcat到底是干嘛的?
热门文章
- Metadata Service 最高频的应用 - 每天5分钟玩转 OpenStack(164)
- 单片机小白学步系列(一) 单片机的前世今生
- swoolephp加密_PHP中给源代码加密的几种方法
- (包含重力矢量)Pygame粒子模拟
- sql server numeric 可存几位小数_想成为优秀SQL高手?你就差这些细节
- date时区 es logstash_elastic date时区问题解决办法
- iis7设置html支持asp,Win7下启用IIS7配置ASP运行环境的详细方法
- c# mongodb or查询_C# MongoDB 查询方法
- cpu开机就是60℃_铅锤哥:十五种电脑开机黑屏的原因与解决思路
- MSN8.0经常出现连接错误,如何解决?