由于木块可以由一些木块的消除,使两边相同颜色的合并

所以我们设定一个归并方式,即每个区间记录一下右边的延展性。

(等于左边找右边)

设 \(f[i][j][k]\) 为\([i, j]\) 区间,右侧有 \(k\) 个颜色 \(= a[j]\) 的。

考虑两种转移方式。

第一种操作:直接搞掉右边的。

设 \(i <= p <= j\),且 \([p, j]\) 区间内的颜色都是 \(a[j]\)。

那么把右边的搞掉即可,

\(f[i][p - 1][0] + (k + j - p + 1) ^ 2\)

第二种操作:考虑把 \([q + 1, p - 1]\) 这段搞掉,然后左边和右边的合并。

即找一个位置 \(i <= q < p - 1\); 且满足 \(a[q] = a[j]\)

\(f[q + 1][p - 1][0] + f[i][q][k + j - p + 1]\)

一个剪枝,保证 \(a[q] \not= a[q + 1]\),否则肯定不优。

值得注意的是边界问题

#include <cstdio>
#include <iostream>
#include <cstring>
using namespace std;
const int N = 205;
int n, a[N], f[N][N][N];
int dp(int l, int r, int k) {
if (f[l][r][k] != -1) return f[l][r][k];
int &v = f[l][r][k];
if (l == r) return v = (k + 1) * (k + 1);
int p = r;
while (p - 1 >= l && a[p - 1] == a[r]) p--;
v = (p == l ? 0 : dp(l, p - 1, 0)) + (k + r - p + 1) * (k + r - p + 1);
for (int q = l; q < p - 1; q++) {
if (a[q] == a[r] && a[q] != a[q + 1])
v = max(v, dp(q + 1, p - 1, 0) + dp(l, q, k + r - p + 1));
}
return v;
}
int main() {
int T; scanf("%d", &T);
for (int t = 1; t <= T; t++) {
memset(f, -1, sizeof f);
scanf("%d", &n);
for (int i = 1; i <= n; i++) scanf("%d", a + i);
printf("Case %d: %d\n", t, dp(1, n, 0));
}
return 0;
}

最新文章

  1. CentOS安装Maven
  2. DNS-2
  3. Android Listview
  4. android之读取SD卡状态
  5. 建模算法(五)&mdash;&mdash;图与网络
  6. 详解Spring事件驱动模型
  7. font-size单位换算
  8. Java并发:Callable、Future和FutureTask
  9. iOS开发中图片方向的获取与更改
  10. Linux 内核的文件 Cache 管理机制介绍-ibm
  11. web报告工具FineReport在使用方法和解决方案常见错误遇到(一)
  12. 如何将 Area 中的 Controller 放到独立的程序集?
  13. java学习笔记 --- 异常
  14. 字符串时间和NSDate相互转换的坑
  15. 更改Qt Application为 Qt Console Application
  16. not in 前面/后面存在null值时的处理
  17. php+ajax实现登录按钮加载loading效果
  18. SPOJ COT Count on a tree(树上主席树 + LCA 求点第k小)题解
  19. ERP主副机和打印机配置FAQ
  20. 自动化测试基础篇--Selenium iframe定位问题

热门文章

  1. GC 的认识(转) https://github.com/qcrao/Go-Questions/blob/master/GC/GC.md#1-什么是-gc有什么作用
  2. IO复用之poll
  3. mysql参数总结
  4. 一文解析TCP/UDP
  5. Python_多进程_pool进程池
  6. C++中STL的sort函数
  7. window.frames[&quot;id&quot;].location使用
  8. 精尽MyBatis源码分析 - MyBatis初始化(四)之 SQL 初始化(下)
  9. 面经分享!蚂蚁金服三面被拒,重拾起鼓四面猿辅导成功拿下offer!
  10. 总是说spring难学?来看完这些spring的注解及其解释,真香!