博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
UVA - 10559 Blocks
阅读量:7291 次
发布时间:2019-06-30

本文共 1598 字,大约阅读时间需要 5 分钟。

思路:区间dp + 记忆化搜索

dp[i][j][k] : (区间 [i,  j] 后面带上一段和 j 颜色相同的且长度为 k )的消消乐最大积分

1.消最后一段颜色和 j 颜色相同的

dp[i][j][k] <-- dp[i][j-1][0] + (k+1)^2

2.对于i <= l < j, 如果 l 和 j 的颜色相同, 那么可以把 [l+1, j-1]消掉, 那么剩下的一段就有 k+1 个和 l 相同的一段了

dp[i][j][k] <-- dp[i][l][k+1] + dp[l+1][j-1][0]

 

答案就是dp[1][n][0],采用记忆化搜索更方便转移

代码:

#pragma GCC optimize(2)#pragma GCC optimize(3)#pragma GCC optimize(4)#include
using namespace std;#define fi first#define se second#define y1 y11#define pi acos(-1.0)#define LL long long//#define mp make_pair#define DEBUG#define pb push_back#define ls rt<<1, l, m#define rs rt<<1|1, m+1, r#define ULL unsigned LL#define pll pair
#define pli pair
#define pii pair
#define piii pair
#define pdd pair
#define mem(a, b) memset(a, b, sizeof(a))#define fio ios::sync_with_stdio(false);cin.tie(0);cout.tie(0);#define fopen freopen("in.txt", "r", stdin);freopen("out.txt", "w", stout);//headconst int N = 205;int dp[N][N][N];int a[N];int dfs(int l, int r, int k) { if(l > r) return 0; if(l == r) return (k+1)*(k+1); if(~dp[l][r][k]) return dp[l][r][k]; dp[l][r][k] = dfs(l, r-1, 0) + (k+1)*(k+1); for (int i = l; i < r; i++) { if(a[i] == a[r]) { dp[l][r][k] = max(dp[l][r][k], dfs(l, i, k+1) + dfs(i+1, r-1, 0)); } } return dp[l][r][k];}int main() { int T, n; scanf("%d", &T); for(int cs = 1; cs <= T; cs++) { scanf("%d", &n); for (int i = 1; i <= n; i++) scanf("%d", &a[i]); mem(dp, -1); printf("Case %d: %d\n", cs, dfs(1, n, 0)); } return 0;}

 

转载于:https://www.cnblogs.com/widsom/p/10326641.html

你可能感兴趣的文章
【好程序员笔记分享】C语言之交换变量的值
查看>>
linux 安装和初级优化
查看>>
C#系列-多样化的程序分支[7]
查看>>
Keepalived配置文件详解(以Haproxy作为负载均衡器)
查看>>
megacli创建RAID10过程详解
查看>>
Linux系统引导过程
查看>>
【apache】mod_proxy 和 mod_rewrite实现js跨域
查看>>
林锐博士谈考研
查看>>
Vant Weapp小程序蹲坑之使用checkbox组件
查看>>
重载operator<<运算符时第二个参数最好不要写成指向对象的指针
查看>>
在ubuntu上编译 wpa_supplicant-2.6
查看>>
68ES6_解构_数组操作_对象操作
查看>>
poj——1470 Closest Common Ancestors
查看>>
Mysql Master/Slave Set Up
查看>>
自动化部署Newton版OpenStack (一)
查看>>
我的友情链接
查看>>
几个经典的Spring学习资料
查看>>
Objective-C 常用代码
查看>>
linux下IPTABLES配置详解
查看>>
由网络引起的打印故障和邮件问题
查看>>