好吧,我想到的是枚举决策。。。

居然是个类似于区间DP的感觉。恩。。确实是呀,只不过是需要在DP的时候附加上额外的条件

定义状态dp[i][j][k]表示区间i~j且右边附加了k个与j同色的方块的最大值

每次考虑把最右边的消去,既然是考虑把最右边的消去的话,那么就有两种消去方法,第一种是直接这一次消去,第二种是留着以后消去。

关于第二种消去的办法是枚举i~j中除去j以外的每段与j同色的色块的右端,考虑把当前的最右边的色块附在这一段的最右边,语言感觉有点没有表述的清楚,

状态转移方程是dp[i][j][k]=dp[i][ri][0]+(j-ri+k)*(j-ri+k),其中ri是把右端消去后的新起始点,也就是右边第一个不与j同色方块的位置

第二种转移则是枚举每一段与j同色的右端,假设为le,方程是dp[i][j][k]=max(dp[i][j][k],dfs(dp[i][le][k+j-ri])+dfs(dp[le+1][ri][0]))相当于两段之和

挺好的题目

#include <iostream>
#include <cstring>
#include <algorithm>using namespace std;
const int maxm=210;int times,n,kcase,color[maxm],dp[maxm][maxm][maxm],dfs(int i=1,int j=n,int k=0);
void init();int main(){ios_base::sync_with_stdio(false);cin>>times;while(times--){cin>>n;init();for(int i=1;i<=n;++i)cin>>color[i];cout<<"Case "<<++kcase<<": "<<dfs()<<endl;}return 0;
}void init(){memset(dp,0,sizeof dp);
}int dfs(int i, int j, int k){if(i>j)return 0;if(dp[i][j][k])return dp[i][j][k];int ri=j;while(ri>=i&&color[j]==color[ri])--ri;dp[i][j][k]=dfs(i,ri,0)+(j-ri+k)*(j-ri+k);for(int le=i;le<=ri;++le)if(color[le+1]!=color[le]&&color[le]==color[j])dp[i][j][k]=max(dfs(i,le,j-ri+k)+dfs(le+1,ri,0),dp[i][j][k]);return dp[i][j][k];
}

100道动态规划——34 UVA 10559 Blocks 状态的定义 状态转移方程相关推荐

  1. 100道动态规划——17 UVA 10934 Dropping water balloons 猜数问题

    老实说我感觉这个更加像递推..而不是动态规划. 一开始对答案是很疑惑的,后来去问了dalao,dalao告诉我这是猜数问题,于是我就找关于猜数问题的资料看,发现他们本质是确实是同一个问题. 这里把链接 ...

  2. UVA 10559 Blocks 方块消除

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

  3. uva 10559——Blocks

    题意:有n个带颜色的方块,同种颜色的方块连成一个区域,每次可以消除一个区域的方块x,然后得到分数x2,右边的方块左移,然后问求最大的分数. 思路:区间dp,dp(i,j,k)表示区间(i,j)在右边添 ...

  4. 43 SD配置-销售凭证设置-定义状态管理授权码

    业务背景:定义状态管理授权码 事务码:BS52 SPRO路径:SPRO->控制->内部订单->订单主数据->状态管理->定义状态管理授权码 第1步,SPRO进入 第2步, ...

  5. 100 道常见 Hadoop 面试题及答案解析

    100 道常见 Hadoop 面试题及答案解析 目录 1 单选题 ................................................................... ...

  6. css就近原则_细品100道CSS知识点(上)「干货满满」

    作者:hh_phoebe 转发链接:https://juejin.im/post/5ee0cf335188254ec9505381 目录 细品100道CSS知识点(上)[干货满满]本篇 细品100道C ...

  7. 100道MySQL数据库面试题解析

    1. MySQL索引使用有哪些注意事项呢? 可以从三个维度回答这个问题:索引哪些情况会失效,索引不适合哪些场景,索引规则 索引哪些情况会失效 查询条件包含or,可能导致索引失效如何字段类型是字符串,w ...

  8. 转-python面试题目集锦(100道部分附答案)

    Python爬虫人工智能教程:www.python88.cn 编程资源网:www.python66.cn 最近收集整理了100道python真实面试笔试题,并自己做了一些,希望能帮助大家,顺利早日找到 ...

  9. 2020最新各大厂面试遇到的100道软件测试面试题+答案纯干货!! 金九银十到了 快点看!!!

    [纯干货!!!]花费了整整3天,整理出来的全网最实用软件测试面试大全,一共100道题目+答案的纯干货,希望大家多多支持,建议 点赞!!收藏!!长文警告,全文共12000+字,涵盖软件测试面试可能遇到的 ...

最新文章

  1. Error in match.names(clabs, names(xi)) : names do not match previous names
  2. 算法系列15天速成——第三天 七大经典排序【下】
  3. net 模式中虚拟机连不上本机oracle_高并发与负载均衡(三种负载模式)
  4. 【262】pscp命令 实现windows与linux互传文件
  5. 小森生活显示无可用服务器,《小森生活》无可用游戏服务器解决教程 无可用网关服务器怎么办...
  6. IP地址、子网掩码、网关、默认网关、DNS的理解
  7. 最详细的SLAM综述
  8. 用子函数实现strlen.strcpy.strcat.strcmp(完整代码)
  9. 定制适用于ARM平台的Ubuntu rootfs(根文件系统)
  10. 一个按钮多个ajax,如何为表格中的多个按钮设置AJAX调用
  11. vue3.0项目创建
  12. 经典算法-(六)老鼠走迷宫
  13. ASP.NET with C#生成验证码的过程
  14. r语言初学者指南_由R入统:R语言统计学类书籍推荐
  15. 计算机二级公共基础知识点整理
  16. VMware Workstation 12 Pro的安装
  17. Pytorch构建Transformer实现英文翻译
  18. 约瑟夫环问题:有n个人围成一圈,顺序编号。从第1个人开始报数(从1-3报数),凡报到3的人退出圈子,问最后留下的是原来第几号的那位?
  19. Echarts仪表盘的大小调整
  20. c语言lnk1120,c - 致命错误LNK1120:C中1个未解决的外部问题 - 堆栈内存溢出

热门文章

  1. 基于ssm家教中介服务网站
  2. 家谱链-用技术传承历史
  3. 计算机专业查重及降重技巧
  4. 数字化项目管理系统实现了自动化绩效考核
  5. 万网m3 windows linux切换,discuz 论坛 绑定万网m3虚拟主机子目录教程
  6. 个人项目——STM32接入机智云教程
  7. plc远程监控.plc远程通讯
  8. Zemax学习笔记(15)- ZEMAX设计光谱仪
  9. java jaxb_java – 使用JAXB和Any进行序列化
  10. 基于GPT-4的神仙插件Bito,亲测好用