原题链接:https://vjudge.net/problem/UVA-10559
分类:动态规划
备注:多维考虑

dp[i][j][k]表示区间[i,j]块右接上k个与a[j]同色的元素
先将最右边同色的特意挑选出来,得到p ∈ [i, j]中最左边的使得a[p] = a[p+1] = … = a[j]的值,即从右边界j位置往左到p位置是同色的最长段。如果直接将[p,j]消除,则状态转移到d(i, p - 1, 0) + (j - p + 1 +k)^2

如果[i, p - 1]段中仍有与a[j]同色的段,可以找到q满足q<p且a[q] == a[j] && a[q + 1] != a[q],考虑将[q+1,p-1]这一段先消除掉,然后让[i,q]和[p,j]拼接起来,则最右边同色段会变长,即与a[j]同色的段有了增长。
这种情况要考虑对q的枚举,状态转移为d(q + 1, p - 1, 0) + d(i, q, j - p + 1 + k)
返回所有状态中最大值即可。

#include <bits/stdc++.h>
using namespace std;int t, n, a[205], dp[205][205][205];
int d(int i, int j, int k) {if (i > j) return 0;if (dp[i][j][k]) return dp[i][j][k];if (i == j) return dp[i][j][k] = (1 + k) * (1 + k);int p = j;while (p > i && a[p - 1] == a[j]) p--;int ret = d(i, p - 1, 0) + (j - p + k + 1) * (j - p + k + 1);for (int q = p - 1; q >= i; q--) {if (a[q] == a[j] && a[q] != a[q + 1]) {ret = max(ret, d(q + 1, p - 1, 0) + d(i, q, j - p + k + 1));}}return dp[i][j][k] = ret;
}int main(void) {//  freopen("in.txt", "r", stdin);
//  freopen("out.txt", "w", stdout);scanf("%d", &t);int kase = 0;while (t--) {scanf("%d", &n);memset(dp, 0, sizeof(dp));for (int i = 1; i <= n; i++)scanf("%d", &a[i]);printf("Case %d: %d\n", ++kase, d(1, n, 0));}return 0;
}

例题 9-27 方块消除(Blocks, UVa10559)相关推荐

  1. 1109: 方块消除 blocks

    时间限制: 1 Sec 内存限制: 128 MB O2 提交: 127 解决: 59 [提交][状态][博客][加入收藏] 题目描述 Jimmy最近迷上了一款叫做方块消除的游戏. 游戏规则如下:N个带 ...

  2. 方块消除 UVA10559

    题意:给一排方块,每个方块有一个颜色,每次可以选几个连续颜色相同方块消除,得分为方块数平方,求最大总得分. 按照一般的序列dp思路,dp[i][j]应当从dp[i][k]和dp[k][j]中转移(i& ...

  3. 【方块消除】(附加工程)

    方块消除 一.引擎 二.游戏流程 图示 游戏 三.研发阶段 1.导入框架DLFramwork 2.Game游戏入口 3.GameMgr游戏管理类 4.BlockMgr主要提供可供全局访问的方块数组,是 ...

  4. PKU1390UVA10559方块消除+弱化版P2135

    洛谷UVA10559题面: 题目描述 有 n 个带有颜色的方块,没消除一段长度为x的连续的相同颜色的方块可以得到 x^2 的分数,让你用一种最优的顺序消除所有方块使得得分最多. 输入格式 第一行包含测 ...

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

    方块消除游戏(完美世界2017秋招真题)题目描述 如下图,有10*10个不同颜色的方块,每个方块可能是红.绿.蓝.黄.紫5种颜色之一.当点击其中某一个方块时,如果它有相邻的同颜色方块,则将所有与此方块 ...

  6. CocosCreator 方块消除教程

    方块消除教程 <背景>--------------------------------------------------------------------.1 <方块>-- ...

  7. 第4-8课:方块消除游戏

    前面基础部分我们介绍过简单的串模型的动态规划,在这个系列中,我们又介绍了区间动态规划模型.状态压缩动态规划模型和线性动态规划模型.我们用的算法实现都是尽量使用状态递推关系式直接用递推的方法,大家可能都 ...

  8. P2135 方块消除

    题目描述 Jimmy最近迷上了一款叫做方块消除的游戏.游戏规则如下:n个带颜色方格排成一列,相同颜色的方块连成一个区域(如果两个相邻方块颜色相同,则这两个方块属于同一区域).为简化题目,将连起来的同一 ...

  9. Python学习:方块消除游戏

    [编程题:方块消除游戏] emmmm..依然牛客网上的题,难度标识才一颗星,但是感觉自己看代码看了好久才理解实现的过程. 题目描述:如下图,有10*10个不同颜色的方块,每个方块可能是红.绿.蓝.黄. ...

  10. puzzle(1412)俄罗斯方块、方块消除、解封方块

    目录 俄罗斯方块 方块消除 彩方块消除 解封方块 俄罗斯方块 4399在线play 凑齐一行就消除. 方块消除 4399在线play 不区分颜色,只要一行.一列或者一宫9个格子都填满了,即可消除. 彩 ...

最新文章

  1. “睡眠猴子”团队项目及成员介绍
  2. java类函数默认的保护级别_事件说明
  3. windows10-seaslog安装笔记
  4. JSP九大内置对象及其作用
  5. java开源bi_poli-java开源BI软件
  6. ZKTeco/熵基科技F18指纹门禁考勤一体机 破解管理员
  7. 批量修改文件夹内文件格式
  8. Android APP登录界面
  9. css flex实现经典的三栏布局
  10. CTGU实验6_1-创建能否借书存储过程
  11. HTTP状态码完整介绍
  12. 机器学习之聚类算法——聚类效果评估可视化
  13. 这些年我用过的API文档工具,个个是精品。
  14. java中insteadof_Java代码规范小结(一)
  15. Smalltalk for Everyone Else
  16. 调用高德导航,百度导航,腾讯地图
  17. XVG恶意挖矿事件透视——“算力优势+时间劫持”攻击案例分析
  18. 【转】CAN接口电路的 EMC设计方案(工业)
  19. 求chen混沌系统仿真程序
  20. 40 - 数据库基础

热门文章

  1. AVI视频格式分析-封装格式
  2. 软件工程(1) CSDN花神生涯
  3. 【MQTT】使用MQTT.fx上报温度到腾讯云
  4. “双减”政策下的少儿编程市场:前8月融资12起,资本加持下何时跑出“独角兽”?...
  5. 一位架构师用服务打动客户的故事之四
  6. 《每日一套题·提升你我能力》· 第五篇
  7. 地图对接汇总(百度地图)
  8. 带有播放列表的网页播放器
  9. 软件质量与测试--第四周作业 wcPro
  10. 【转】微信小程序日期时间选择器(年月日时分秒)