Uva 10559 消除方块
题意:
每次可以选择一个区间(连续相同的序列)消除,得分为 len*len;问最大得分。
分析:
很容易想到是区间DP,但是不像普通的区间DP一样切割方式~~~
如果定义 d[ i ][ j ] 区间,那么在里面切割,将有两个部分,而且中间的要连续相等,连续相等的区间可能还要枚举,加上 判断连续相等,可能会时间超,而且不是就算枚举了,剩下的还要合并,确实麻烦。
一种新的区间DP状态定义: d[i][j][k] 区间 i ~ j 后面继续加 k 个字符(与 j 相同)的最优解。
那么答案是: d[1][n][0];
状态转移:首先一种情况是 d[i][j-1][0] + (k+1)^2;
然后是切割方式:如何切割呢?
如果: i 和 r 颜色相同,这里就有可能产生一种切割方式,首先是中间部分 d[i+1][r-1][0] ,然后是合并部分,d[l][i][k+1];
新思维,巧妙解决合并的问题~~~
#include <bits/stdc++.h> using namespace std; const int maxn = ;
int n,v[maxn];
int d[maxn][maxn][maxn]; int dp(int l,int r,int k) {
if(l>r) return ;
int& ans = d[l][r][k];
if(ans) return ans; ans = dp(l,r-,) + (k+)*(k+); for(int i=r-; i>=l; i--) {
if(v[i]==v[r]) {
ans = max(ans,dp(l,i,k+)+dp(i+,r-,));
}
}
return ans;
} int main()
{
int t;
scanf("%d",&t); for(int z = ; z<=t; z++) {
scanf("%d",&n);
for(int i = ; i <= n; i++) scanf("%d",&v[i]);
memset(d,,sizeof(d)); printf("Case %d: %d\n",z,dp(,n,)); } return ;
}
Uva 10559 消除方块的更多相关文章
- UVA 10559 Blocks
题目大意:有一串带颜色的方块,每次可以消掉颜色相同的一段,得到size^2的分数,问最多能得到多少分数.n≤200. 给这题状态跪下来. 显然的区间DP,但设f[i][j]是不够的. 考虑到之前做过的 ...
- UVA 10559 Blocks(区间DP&&递推)
题目大意:给你玩一个一维版的消灭星星,得分是当前消去的区间的长度的平方,求最大得分. 现在分析一下题目 因为得分是长度的平方,不能直接累加,所以在计算得分时需要考虑前一个状态所消去的长度,仅用dp[l ...
- UVa 10559 Blocks (DP)
题意:一排带有颜色的砖块,每一个可以消除相同颜色的砖块,,每一次可以到块数k的平方分数.求最大分数是多少. 析:dp[i][j][k] 表示消除 i ~ j,并且右边再拼上 k 个 颜色等于a[j] ...
- Blocks UVA - 10559
传送门 题目大意 有n个带有颜色的方块,没消除一段长度为x的连续的相同颜色的方块可以得到x^2的分数,让你用一种最优的顺序消除所有方块使得得分最多. 分析 首先不难看出这是一个区间dp,于是我们考虑如 ...
- UVA 10559 Blocks —— 区间DP
题目:https://www.luogu.org/problemnew/show/UVA10559 区间DP,有点难想: 为了方便,先把原来就是连续一段相同颜色的点看做一个点,记一下长度: f[i][ ...
- UVA 10559 Blocks——区间dp
题目:https://www.luogu.org/problemnew/show/UVA10559 应该想到区间dp.但怎么设计状态? 因为连续的东西有分值,所以应该记录一下连续的有多少个. 只要记录 ...
- uva 10559
记忆话搜索 DP 看了网上题解 状态方程真是巧妙 orz #include <cstdio> #include <cstdlib> #include <cmath> ...
- poj 1390 Blocks (经典区间dp 方块消除)
Blocks Time Limit: 5000MS Memory Limit: 65536K Total Submissions: 4250 Accepted: 1704 Descriptio ...
- 利用cocos2d-x实现CandyCrushSaga消除功能
猴子原创,欢迎转载.转载请注明: 转载自Cocos2D开发网–Cocos2Dev.com,谢谢! 原文地址: http://www.cocos2dev.com/?p=455 昨天没事写了个三消玩玩.已 ...
随机推荐
- 修改TrustedInstaller权限文件
我们在删除文件的时候有可能出现无法删除,并且需要TrustedInstaller提供的权限,所以我们主要修改该文件的拥有者(修改为本机用户)即可.下文举例哦,方法如下: 总结起来:修改文件的所有着为本 ...
- ionic resources
下面是我在使用ionic,cordova,angularjs的时候经常使用的资源. ionic css components cordova documentation ionic icons ngC ...
- TOJ 1883 Domino Effect
Description Did you know that you can use domino bones for other things besides playing Dominoes? Ta ...
- Linux 下安装 Memcached 和 PHP 开启 Memcached 扩展 及 LAMP 环境的安装
http://blog.csdn.net/liruxing1715/article/details/8269563
- 如何给MySql创建连接用户并授权
一般在为MySql创建用户时建议使用GRANT前台命令,当然如果对我们开发者而言,方法还有很多种,比如使用INSERT命令,甚至是直接修改mysql user数据表,但仍然建议按照MySQL规范去授权 ...
- 如何运营亿级QPS的Redis系统
欢迎大家前往腾讯云+社区,获取更多腾讯海量技术实践干货哦~ 作者:冯伟源,高级工程师,腾讯云Redis系统运维负责人.6年DBA经验,一直从事SQL优化.实例调优.数据库架构.海量数据库集群运维.运营 ...
- 解决引入外部文件(图片、js等)出现 403 net::ERR_ABORTED 的问题
页面中引入外网的链接资源,会产生一个新的http请求.为了安全(URL里可能包含用户信息),浏览器一般都会给这写请求头加上表示来源的referrer 字段. 所以,此时我们需要隐藏外部链接中的refe ...
- MVC3.0与MVC2.0的区别
昨天面试时第一回用MVC2.0做了一个简单的增删改查功能的测试.想一下用了一年多的MVC3.0,对这两个版本不同之处做以下几点总结: 最明显的是MVC3.0较MVC2.0而言,多了Razor视图: 1 ...
- 亲测,很有效的忽略SSL证书方法
1.在httpclient发起请求时,有时会出现下面这种情况 你的日志中出现有关SSL的异常,javax.net.ssl.SSLPeerUnverifiedException: peer not au ...
- oracle学习篇一:sqlplus常用命令
1.程序运行--> cmd --> sqlplus 登陆普通用户:scott/brant;普通管理员用户登陆:system/brant;高级管理员用户登陆:1>先切换其他用户:SQL ...