[poj1390]Blocks(方块消除)
题目大意:给定一序列,可点击某一位置消除与其相邻且相同的方块,得分为$len*len$,求最大得分。
解题关键:关键是状态的构造,首先离散化一下,令$dp[i][j][k]$表示序列$i-j$且后面有$k$个与该序列最后位置相同的元素,
则$dp[i][j][k]$可以由两种情况转化而来,
1、最后一部分自己消除 $dp[i][j][k]=dp[i][j-1][0]+(k+len[j])*(k+len[j])$
2、最后一部分和该序列中前面的某一部分消除,假设坐标pos与r颜色相同 $dp[i][j][k]=dp[i][pos][k+len[j]]+dp[pos+1][j-1][0]$
#include<cstdio>
#include<cstring>
#include<algorithm>
#include<cstdlib>
#include<iostream>
#include<cmath>
using namespace std;
typedef long long ll;
int t,n,dp[][][],a[],len[],clr[],num;
int dfs(int l,int r,int k){
if(l>r) return ;
if(dp[l][r][k]) return dp[l][r][k];
dp[l][r][k]=dfs(l,r-,)+(k+len[r])*(k+len[r]);
for(int i=l;i<r;i++){
if(clr[i]==clr[r]) dp[l][r][k]=max(dp[l][r][k],dfs(l,i,k+len[r])+dfs(i+,r-,));
}
return dp[l][r][k];
}
int main(){
scanf("%d",&t);
for(int ca=;ca<=t;ca++){
memset(dp,,sizeof dp);
memset(len, , sizeof len);
num=;
scanf("%d",&n);
for(int i=;i<=n;i++) scanf("%d",a+i);
for(int i=;i<=n;i++){
if(a[i]!=a[i-]) clr[++num]=a[i],len[num]=;
else len[num]++;
}
int ans=dfs(,num,);
printf("Case %d: %d\n",ca,ans);
}
return ;
}
[poj1390]Blocks(方块消除)的更多相关文章
- [Luogu2135] 方块消除【区间Dp】
Online Judge:P2135 方块消除(这题不用预处理) Label:区间Dp 题目描述 Jimmy最近迷上了一款叫做方块消除的游戏.游戏规则如下:n个带颜色方格排成一列,相同颜色的方块连成一 ...
- [BNUZOJ1261][ACM][2016北理校赛]方块消除(栈,字符串)
玩过方块消除游戏吗?现在规定当有两个或两个以上相邻且颜色相同的方块在一起的时候,它们就会产生消除反应.当存在多个消除反应同时产生时,最下的反应先执行.现在只给你其中一列,求最后剩下的方块结果. 输入要 ...
- P2135 方块消除
题目描述 Jimmy最近迷上了一款叫做方块消除的游戏.游戏规则如下:n个带颜色方格排成一列,相同颜色的方块连成一个区域(如果两个相邻方块颜色相同,则这两个方块属于同一区域).为简化题目,将连起来的同一 ...
- luogu P2135 方块消除 |dp
题目描述 Jimmy最近迷上了一款叫做方块消除的游戏.游戏规则如下:n个带颜色方格排成一列,相同颜色的方块连成一个区域(如果两个相邻方块颜色相同,则这两个方块属于同一区域).为简化题目,将连起来的同一 ...
- 「THUSC 2016」成绩单 & 方块消除 (区间dp)
成绩单 $f[l][r][mi][mx]$表示从l到r发到还没发的部分的最小值为mi最大值为mx时的最小代价. $f[l][r][0][0]$表示从l到r全部发完的代价. 自己写的无脑dp,枚举中转点 ...
- 题解 Sue的小球/名次排序问题/方块消除/奥运物流
Sue的小球 名次排序问题 方块消除 奥运物流 Sue的小球 题目大意 有 \(n\) 个小球在下落,初始位置 \((x_i,y_i)\),下落速度为 \(v_i\).你初始位置在 \(x_0\),速 ...
- poj 1390 Blocks (经典区间dp 方块消除)
Blocks Time Limit: 5000MS Memory Limit: 65536K Total Submissions: 4250 Accepted: 1704 Descriptio ...
- UVA10559 方块消除 Blocks(区间dp)
一道区间dp好题,在GZY的ppt里,同时在洛谷题解里看见了Itst orz. 题目大意 有n个带有颜色的方块,没消除一段长度为 \(x\) 的连续的相同颜色的方块可以得到 \(x^2\) 的分数,用 ...
- 10559 - Blocks(方块消除|DP)
该题乍一看和矩阵链乘非常类似,但是有一个不同之处就是该题能够拼接 . 为了达到这个目的.我们不得不拓展维度d[i][j][k].用一个k表示最右边拼接了k个和a[j]同样颜色的方块. 问题的关键在 ...
随机推荐
- Flex中容器的完全隐藏
在html中,但我们设置某个dom元素的display属性为none时,dom元素不可见且其占用空间从dom树上隐藏,而在Flex中,但我们把某个组件的visible属性visible设为false的 ...
- Ubuntu dpkg 查询已安装的软件包
要检查特定的包,比如firefox是否安装了,使用这个命令: dpkg -s firefox 要列出你系统中安装的所有包,输入下面的命令: dpkg --get-selections 你同样可以通过g ...
- 转 Java Classloader机制解析
转 Java Classloader机制解析 发表于11个月前(2014-05-09 11:36) 阅读(693) | 评论(0) 9人收藏此文章, 我要收藏 赞1 慕课网,程序员升职加薪神器,点 ...
- mysql delete数据时报Error Code 1175
我们在学校mysql的时候,在更新或者删除数据的时候,会遇到以下错误: Error Code: . You are using safe update mode and you tried to up ...
- spring boot: 在maven中装入springframework框架
1.在maven 的pom.xml中加入 <dependency> <groupId>org.springframework</groupId> <artif ...
- 分享知识-快乐自己:HBase编程
HBase编程: 一):大数据(hadoop)初始化环境搭建 二):大数据(hadoop)环境搭建 三):运行wordcount案例 四):揭秘HDFS 五):揭秘MapReduce 六):揭秘HBa ...
- JSTL前台报错
报错信息: jsp页面报错 Can not find the tag library descriptor for "http://java.sun.com/jsp/jstl/core&qu ...
- vc6++Release和Debug
1. 如何快速地规范代码缩进格式 选中所需要规范的代码,按shift+F8 2. 如何在Release状态下进行调试 Project->Setting=>ProjectSetting对话框 ...
- Android学习路线01
part1:Java 1.Java基础 2.Java面向对象 3.数组与集合,异常,常用类 4.Io流 5.多线程socket编程 6.数据库,网络传输,数据解析 part2:Android 1.An ...
- C语言小程序(一)、判断三角型类型
最近回炉重造C语言,陆续写一些比较短的代码,选择其中的一些贴到这里,都是在Linux下的代码,Windows未测试. 第一个判断三角形的类型,两个浮点型数据不能直接判断相等,为了输入方便一些,自己设置 ...