POJ 1390 Blocks(区间DP)
Blocks
【题目链接】Blocks
【题目类型】区间DP
&题意:
给定n个不同颜色的盒子,连续的相同颜色的k个盒子可以拿走,权值为k*k,求把所有盒子拿完的最大权值
&题解:
这题是在16北大集训的pdf看见的,听说黑书上也有.它的那个多加一维真的很难想,dp方程现在也没怎么懂,先记一下吧,以后回来认真补
&代码:
#include <iostream>
#include <cstring>
#include <cstdio>
using namespace std;
const int M = 210;
struct Segment {
int color;
int len;
};
Segment segments[M];
int score[M][M][M];
int ClickBox(int i, int j, int len) {
if(score[i][j][len] != -1)
return score[i][j][len];
int result = (segments[j].len + len) * (segments[j].len + len);
if(i == j) {
return result;
}
result += ClickBox(i, j - 1, 0);
for(int k = i; k <= j - 1; k++) {
if(segments[k].color != segments[j].color)
continue;
int r = ClickBox(k + 1, j - 1, 0);
r += ClickBox(i, k, segments[j].len + len);
result = max(result, r);
}
return score[i][j][len] = result;
}
int main() {
freopen("E:1.in", "r", stdin);
int T;
cin >> T;
for(int t = 1; t <= T; ++t) {
int n;
memset(score, -1, sizeof(score));
cin >> n;
int lastC = 0;
int segNum = -1;
for(int i = 0; i < n; i++) {
int c;
cin >> c;
if(c != lastC) {
segNum++;
segments[segNum].len = 1;
segments[segNum].color = c;
lastC = c;
}
else {
segments[segNum].len++;
}
}
cout << "Case " << t << ": " << ClickBox(0, segNum, 0) << endl;
}
}
POJ 1390 Blocks(区间DP)的更多相关文章
- POJ 1390 Blocks (区间DP) 题解
题意 t组数据,每组数据有n个方块,给出它们的颜色,每次消去的得分为相同颜色块个数的平方(要求连续),求最大得分. 首先看到这题我们发现我们要把大块尽可能放在一起才会有最大收益,我们要将相同颜色块合在 ...
- POJ 1390 Blocks(DP + 思维)题解
题意:有一排颜色的球,每次选择一个球消去,那么这个球所在的同颜色的整段都消去(和消消乐同理),若消去k个,那么得分k*k,问你消完所有球最大得分 思路:显然这里我们直接用二位数组设区间DP行不通,我们 ...
- POJ 1390 Blocks(记忆化搜索+dp)
POJ 1390 Blocks 砌块 时限:5000 MS 内存限制:65536K 提交材料共计: 6204 接受: 2563 描述 你们中的一些人可能玩过一个叫做“积木”的游戏.一行有n个块 ...
- POJ1390 Blocks (区间DP)
题目链接:POJ 1390.Blocks 题意: 有n个方块排成一列,每个方块有颜色即1到n的一个值,每次操作可以把一段相同颜色的方块拿走,长度为k,则获得的分数为 \(k\times k\),求可获 ...
- poj 1390 Blocks
poj 1390 Blocks 题意 一排带有颜色的砖块,每一个可以消除相同颜色的砖块,,每一次可以到块数k的平方分数.问怎么消能使分数最大.. 题解 此题在徐源盛<对一类动态规划问题的研究&g ...
- POJ 2995 Brackets 区间DP
POJ 2995 Brackets 区间DP 题意 大意:给你一个字符串,询问这个字符串满足要求的有多少,()和[]都是一个匹配.需要注意的是这里的匹配规则. 解题思路 区间DP,开始自己没想到是区间 ...
- 【POJ-1390】Blocks 区间DP
Blocks Time Limit: 5000MS Memory Limit: 65536K Total Submissions: 5252 Accepted: 2165 Descriptio ...
- UVA10559&POJ1390 Blocks 区间DP
题目传送门:http://poj.org/problem?id=1390 题意:给出一个长为$N$的串,可以每次消除颜色相同的一段并获得其长度平方的分数,求最大分数.数据组数$\leq 15$,$N ...
- POJ 1179 - Polygon - [区间DP]
题目链接:http://poj.org/problem?id=1179 Time Limit: 1000MS Memory Limit: 10000K Description Polygon is a ...
随机推荐
- Python的类及单例实现
一.使用@property @property 的作用 将一个get方法变成一个属性 class
- 网络安全第一集之【SQL注入:sqlmap入门】
1,安装sqlmap和python环境 2,对于环境变量超长问题 3,使用sqlmap: sqlmap.py -u "http://k2.hlxy.net/csdw/news1.asp?dp ...
- 微信小程序--家庭记账本开发--04
界面的布局 在微信小程序开发过程中,界面的布局是十分重要的,无论是一个什么样的程序,界面的美观合理才能提供给客户一个较好的使用体验,就微信小程序布局自己看了许多小程序布局,自己将学习心得记录如下: 下 ...
- Springboot中使用Scheduled做定时任务
在开发中,定时任务是常见的功能,在spring boot 下开发定时任务其实很简单,具体代码如下: 1.配置依赖包pom.xml 由于默认的maven仓库经常访问不了,这里采用了阿里云的maven仓库 ...
- 【Codeforces】【网络流】【线段树】【扫描线】Oleg and chess (CodeForces - 793G)
题意: 给定一个n*n的矩阵,一个格子上可以放一个车.其中有q个子矩阵,且q个子矩阵互不相交或者是重叠(但边界可以衔接).这q个子矩阵所覆盖的地方都是不能够放车的.车可以越过子矩阵覆盖的地方进行攻击( ...
- composer install 时遇到 Composer\Downloader\TransportException ...
安装错误 [Composer\Downloader\TransportException] Invalid credentials for 'https://packagist.phpcomposer ...
- python学习:常量和变量
变量的作用:存储信息,日后被调用和修改操作. 常量:固定不变得量,字母要大些. 变量的命名规则: 1.由字母数字下划线组成: 2.不能以数字开头,不能含有特殊字符和空格: 3.不能以保留字命名: 4. ...
- JavaScript的正则表达式的基础
正则表达式:* 具体字符(字面值)*字符边界*字符集合[ace],[0123456789]*字符补集[^ qxz]: 不在qxz范围内*字符范围[a-z 0-9]*字符簇(系统定义好的常用集合)--- ...
- 08_ for 练习 _ sumOf7
<!DOCTYPE html> <html> <head> <meta charset="utf-8" /> <title&g ...
- Log4j的入门和使用
Log4j(log for java)是Apache的一个开源项目,通过使用Log4j,我们可以控制日志信息输送的目的地是控制台.文件.GUI组件,甚至是套接口服务器.NT的事件记录器.UNIX Sy ...