poj 1390 Blocks(dp,黑书dp方块消除)

[POJ1390]Blocks(方块消除) Description Some of you may have played a game called ‘Blocks’. There are n blocks in a row, each box has a color. Here is an example: Gold, Silver, Silver, Silver, Silver, Bronze, Bronze, Bronze, Go 阅读详情


poj 1390 Blocks


先将本来就连在一起的方块看做一个整体,记录颜色,长度

dp[l][r][k],选择[l,r]这一段的方块,根据[l,r]最右的块进行两种决策,k是当前选择颜色块的累加长度

1:直接将r块消除 dp[l][r-1][0]+(len+k)^2

2:在r之前寻找同r一个颜色的块(p)然后一起消除 dp[ l ][ p ][ k + len[ r ]  ]+dp[ p + 1 ][ r - 1][ 0 ]


状态转移太巧妙了,刚开始看的时候一直看不懂那个k


#include<stdio.h>
#include<string.h>
#define MAXN 205
int color[MAXN],len[MAXN],up;
int dp[MAXN][MAXN][MAXN];
int max(int a,int b) {return a>b?a:b;}
//选取的一段格子的左边界、右边界、当前选取的同一种颜色的格子总长度
int d(int l,int r,int k)
{
    if(l>r) return 0;
    if(dp[l][r][k]!=-1) return dp[l][r][k];
    
    int ans=0;
    //直接消除当前选取的同一种颜色
    ans=max(ans,d(l,r-1,0)+(k+len[r])*(k+len[r]));
    //寻找同当前颜色一样的段一同消除
    for(int i=l;i<r;i++)
    {
        if(color[i]==color[r])
            ans=max(ans,d(l,i,k+len[r])+d(i+1,r-1,0));
    }
    dp[l][r][k]=ans;
    return ans;
}
int main()
{
    int cas,n,x;
    color[0]=-1;
    scanf("%d",&cas);
    for(int k=1;k<=cas;k++)
    {
        scanf("%d",&n);
        memset(len,0,sizeof(len));
        memset(dp,-1,sizeof(dp));
        up=0;
        for(int i=0;i<n;i++)
        {
            scanf("%d",&x);
            if(x==color[up])
                len[up]++;
            else
                up++,
                color[up]=x,
                len[up]=1;
        }
        printf("Case %d: %d\n",k,d(1,up,0));
    }
    return 0;
}


poj 1390 Blocks(记忆化搜索/动态规划) 程序设计实习递归练习 Blocks 阅读详情

相关推荐

时间序列聚类在股票市场分析中的实践与优化

时间序列聚类是一种面向动态行为建模的无监督学习方法,其核心在于通过语义感知的距离度量(如DTW)捕捉价格形态的相位弹性与结构相似性,而非依赖静态数值或标签驱动。相比K-Means等传统算法,它能有效缓解金融时序中普遍存在的噪声敏感、对齐失效与形态失真问题,从而提升聚类结果的市场可解释性与策略鲁棒性。该技术已广泛应用于市场状态识别、行业行为分群、异常交易监测等场景,并成为构建可验证量化分析框架的关键预处理层。本文聚焦A股真实行情数据,详解从原始OHLCV到可聚类时间序列的完整链路,涵盖DTW距离计算、层次聚类

weixin_34220179的博客 828

poj 1390 Blocks (经典区间dp 方块消除)

Blocks Time Limit: 5000MS   Memory Limit: 65536K Total Submissions: 4250   Accepted: 1704 Description Some of you may have played a game called 'Blocks'. There are n bloc

To be what you what to be! 2752

(8)机器人动力学

机器人是一个具有多输入多输出的复杂动力学系统,存在严重的非线性,需要非常系统的方法对机器人进行动力学研究。常用的机器人动力学建模方法有:Lagrange(拉格朗日)动力学方法、Newton-Euler(牛顿-欧拉)动力学方法、Gauss(高斯)动力学方法、Kane(凯恩)动力学方法等。机器人动力学研究的是机器人的运动和作用力之间的关系。机器人的动力学问题包括动力学正问题和动力学逆问题。动力学正问题是对于给定的关节驱动力......

rouyu308的博客 9498

10559 - Blocks(方块消除|DP)

该题乍一看和矩阵链乘很相似,可是有一个不同之处就是该题可以拼接 。   为了达到这个目的,我们不得不拓展维度d[i][j][k],用一个k表示最右边拼接了k个和a[j]相同颜色的方块。 问题的关键在于拼接,当右边存在一个q 细节见代码: #include using namespace std; const int maxn = 205; int t,n,d[maxn][maxn][max

AC_Arthur的专栏 1796

DDR3性能优化实战:如何用Xilinx MIG控制器实现800MHz稳定读写(7系列FPGA版)

本文深入探讨了在Xilinx 7系列FPGA上使用MIG控制器实现DDR3存储器800MHz稳定高速读写的实战优化技巧。文章聚焦于高级时序调优、Bank Machine调度策略、用户接口设计优化以及利用ILA进行信号完整性调试,旨在帮助工程师突破性能瓶颈,实现接近理论峰值的稳定带宽,并为进一步冲刺更高频率提供进阶调参指南。

seed的博客 775

大红球预警版-精选+自定义板块监控

这是一款简单易用的股票大单资金监控插件,兼容通达信软件,可嵌入分时图或定制版面。它以红绿圆球直观显示主力买卖情况(红球为买,绿球为卖),支持300万以上大单语音播报。插件提供实时资金流向分析、多股同时监控、自定义预警条件等功能,无需L2账号。用户可自由切换图形/列表模式,监控特定板块,并配合幻影软件实现自动交易。虽然上涨股通常红球占优,但需结合其他指标综合判断。该插件完全免费,包含详细视频教程,适合新手使用。

guleba的博客 1793

方块消除游戏(完美世界2017秋招真题)

方块消除游戏(完美世界2017秋招真题) 题目描述 如下图,有10*10个不同颜色的方块,每个方块可能是红、绿、蓝、黄、紫5种颜色之一。当点击其中某一个方块时,如果它有相邻的同颜色方块,则将所有与此方块连续同颜色相邻的方块消除;剩下的方块中,如果下方有空位则向下移动,如果左侧整列都为空位则向左移动。 输入

小马的博客 1725

易盾滑块的js逆向分析

基于易盾的滑块验证码进行逆向分析,最种实现全系列的验证码逆向,包括滑块、点选、推理拼图等多种类型。

shanf7921的博客 3万+

[POJ1390]Blocks(dp)

Sometimes, the same thing, we can go to the comfort of others, but failed to convince yourself.有时候,同样的一件事情,我们可以去安慰别人,却说服不了自己。

zyf2000 956

【Unity-UGUI控件全面解析】| Layout自动布局组件详解

UGUI中有个自动布局组件Auto Layout,主要包含下面几个模块(点击可进入官方文档下查看描述): 自动布局 布局元素 (Layout Element) 水平布局组 (Horizontal Layout Group) 垂直布局组 (Vertical Layout Group) 网格布局组 (Grid Layout Group) 内容大小适配器 (Content Size Fitter) 自动布局系统 基于布局元素和布局控制器的概念。一个布局元素是具有矩形变换以及其他可选组件的游戏对象。布局元素对自身

努力前行,总会成为自己心中的那道光 2万+

【踩坑记录】pandas.to_sql 报 “‘Engine‘ object has no attribute ‘cursor‘”,最后竟然是环境问题

摘要 本文记录了使用pandas+SQLAlchemy+pymysql将数据写入MySQL时遇到的"Engine对象无cursor属性"错误及其解决方案。问题表现为to_sql方法将SQLAlchemy引擎误认为普通DBAPI连接,导致调用cursor()方法失败。经排查发现,这是由于pandas/SQLAlchemy环境损坏所致,而非代码问题。最终通过完全卸载并重新安装pandas(≥2.1)、SQLAlchemy(≥2.0)和pymysql解决了该问题。文章还建议将遗留的read_s

每日出拳老爷子的博客 336

[黑书 - 动态规划] 线性模型 - 例题1 - 方块消除

POJ1390 - Blocks 加了一个优化反倒慢了,用链表

685

Sigrity System SI SerialLink模式进行Pcie3协议仿真分析操作指导-pcie3_client_single_pre

Sigrity System SI SerialLink模式提供了10个协议合规性检查工具模板,用户可以将根据实际应用替换模板中的SPICE文件,然后进行协议仿真分析,同时软件还提供了目标结果的模板MASK以及该协议需要检查的项目,通过协议分析视为满足设计要求,下面介绍pcie3_client_single_pre仿真分析,具体操作如下。Random(Rj):随机抖动,该抖动用高斯概率分布来描述,通常是由热噪声和其它随机噪声引起的,默认为1.24%UI RMS(平均值),即和标准值的偏差为1.24%UI。

weixin_54787054的博客 598

POJ 1390 Blocks dp

http://poj.org/problem?id=1390 题意:有一种消方块的游戏,连续且颜色相同的一段称为一段,消掉该段方块所得的分数为该段方块长度的平方,不同的消方块的次序会使得最后的总得分不相同,求一中得分最高的消法。 思路:很经典的一道dp题,出自LRJ黑书123页。首先我们想到的是用dp[i][j] 来表示消掉C[i] .. C[j]总共j-i+1段方块的最优解(最大得分),考虑

Chris_Home 1080

最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版

Part-E1-SDIO-Specification-Ver4.00-Final-120220.pdf:最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版,包括SDIO 接口的外设,SDIO 接口官方协议等。

efm32 入门.pdf

本PDF共计22页,介绍的是操作驱动API,下载与否自己斟酌。

poj 1390 Blocks

poj 1390 Blocks 题目大意: 给定n个不同颜色的盒子,连续的相同颜色的k个盒子可以拿走,权值为k*k,求把所有盒子拿完的最大权值。 解题思路: lrj大神黑书上的题,翻了别人的解题报告才做出来的 首先:合并初始相邻相同的块,得到颜色数组c和对应的长度len,例如 1 1 1 1 1 3 2 2 1 1 1 可记为color[ ...

qq_34527468的博客 236

WINCC7.3破解文件

WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载!

poj1390 Blocks(区间dp)

黑书1.5.2例题1 方块消除 首先把相邻的同色块合并成一块,记录col[i],len[i],tot[i]此块后面可能再接的最大长度。用dp[i][j][k]表示区间i…j,在j块以右又接了长度k的最高得分。现在考虑第j块后面接了长度k,我们有两种策略: 1、直接消掉,那么得分就是dp[i][j−1][0]+(len[j]+k)2dp[i][j-1][0]+(len[j]+k)^2 2、在i…

Icefox的博客 564

迈瑞BS系列全自动生化分析仪LIS协议接口手册(内含HL7和ASTM)

迈瑞BS系列全自动生化分析仪LIS协议接口手册,内含HL7和ASTM)

poj1390 Blocks

黑书上的方块消除 #include<stdio.h> #include<string.h> #include<stdlib.h> #include<math.h> #include<algorithm> using namespace std; int n; struct node { int len; ...

weixin_30908649的博客 69

POJ 1390 Blocks (DP)

DescriptionSome of you may have played a game called 'Blocks'. There are n blocks in a row, each box has a color. Here is an example: Gold, Silver, Silver, Silver, Silver, Bronze, Bronze, Bronze, Gold.

Follow My Heart 448

POJ 1390 Blocks(区间DP + 记忆化搜索)

题意: 一排带有颜色的砖块,每一个可以消除相同颜色的砖块,每一次可以到块数 k 的平方分数。问怎么消能使分数最大。 思路: 1. 此题是结合区间动态规划和记忆化搜索的好题,状态转移方程不太好想,以下思路还是根据黑书上面的解释来的; 2. dp[i, j, k] 表示区间 [i, j] 并且在区间后面还有长度为 k 的砖块和 j 的颜色一致; 3. 如果 j 就和后面的 k 个结...

weixin_30462049的博客 182

poj1390 方块消除 dp

参考:徐源盛《对一类动态规划问题的研究》以及刘汝佳的黑书《算法艺术与信息学竞赛》 将方块序列,按颜色分成一段一段的,例如 1 1 1 1 1 3 2 2 1 1 1 可记为color[ 1 ] = 1; len[1 ] = 5; color[ 2 ] = 3; len[ 2 ]

2659

黑书-DP-方块消除 ****

具体题目见 《算法艺术与信息学竞赛》P123 或 http://tyvj.cpwz.cn/Problem_Show.asp?id=1227 (可提交)    以下是代码(转自:http://www.cnblogs.com/jiaohuang/archive/2010/10/20/1856294.html) 1 /* 2 方块消除 3 先压缩下状态用把每种颜色压到一位,记录下每一位的长...

weixin_33739646的博客 174

[poj1390]Blocks(方块消除)

题目大意:给定一序列,可点击某一位置消除与其相邻且相同的方块,得分为$len*len$,求最大得分。 解题关键:关键是状态的构造,首先离散化一下,令$dp[i][j][k]$表示序列$i-j$且后面有$k$个与该序列最后位置相同的元素, 则$dp[i][j][k]$可以由两种情况转化而来, 1、最后一部分自己消除 $dp[i][j][k]=dp[i][j-1][0]+(k+len[j])*(...

weixin_30349597的博客 227

poj1390 Blocks

题目传送门poj1390题目传送门poj1390题目传送门poj1390 题目 BlocksBlocksBlocks TimeLimit:5000MSTimeLimit:5000MSTime Limit: 5000MS MemoryLimit:65536KMemoryLimit:65536KMemory Limit: 65536K TotalSubmissions:6118Tot...

lzx_2014的博客 438

方块消除 (黑书)

P123 题意: 把一个连续的不同颜色的进行消除,如果颜色相同的N块连在一起,可以一次消除,得分为N*N。然后在这种颜色的两端的方块合拢            重新连到一起。 比如:1 2 2 2 2 3 3 3 1 最高得分为: 4*4+3*3+2*2=29 这个是看书后自己写的。 #include #include #include #include #in

jiangjiashi的博客 705

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

Blocks  点击转到 Time Limit: 5000MS   Memory Limit: 65536K Total Submissions: 6197   Accepted: 2557 Description Some of you may have played a game called 'Blocks'. There are n blocks in ...

SYITwin的博客 747
上一篇: noi97 ecnuoj 1244 积木游戏(dp,黑书dp例五)
下一篇: poj 3356 AGTC(dp,最小编辑距离)
yjCola
博客等级 码龄14年 4粉丝 138原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值