设g[i][j][k]为消去区间[i,j]中的方块,只留下k个与a[i]颜色相同的方块的最大价值,f[i][j]为将[i,j]中所有方块消去的价值,转移自己yy一下即可。

为什么这样是对的?因为对于一段区间[i,j]一定存在一种最优方案使得i位置上的方块被最后一次消去,确定了最后一次消去的那k个方块的位置就可以把问题转换成若干个子区间上的子问题来解决。

复杂度是\(O(n^4)\)的,但是能过。

具体见代码:

#include<bits/stdc++.h>
using namespace std;
#define N 207
#define ll long long
int g[N][N][N],f[N][N];
int last[N][N],a[N];
int main()
{
int n,t;
scanf("%d",&t);
for(int o=1;o<=t;o++)
{
scanf("%d",&n);
for(int i=1;i<=n;i++)
scanf("%d",&a[i]);
memset(g,-0x3f,sizeof(g));
memset(f,0,sizeof(f));
for( int i=1;i<=n;i++)
{
memcpy(last[i],last[i-1],sizeof(last[i]));
last[i][a[i-1]]=i-1;
}
for(int i=n;i>=1;i--)
for(int j=i;j<=n;j++)
{
f[i][j]=max((g[i][j][1]=f[i+1][j])+1,f[i][j]);
for(int k=2;k<=n;k++)
{
int p=a[j]==a[i]?j:last[j][a[i]];
while(p!=i&&g[i][p-1][k-1]!=g[0][0][0])
{
g[i][j][k]=max(g[i][j][k],g[i][p-1][k-1]+f[p+1][j]);
p=last[p][a[i]];
}
f[i][j]=max(f[i][j],g[i][j][k]+k*k);
}
}
printf("Case %d: %d\n",o,f[1][n]);
}
return 0;
}

UVA10559 方块消除 Blocks 题解的更多相关文章

  1. UVA10559 方块消除 Blocks(区间dp)

    一道区间dp好题,在GZY的ppt里,同时在洛谷题解里看见了Itst orz. 题目大意 有n个带有颜色的方块,没消除一段长度为 \(x\) 的连续的相同颜色的方块可以得到 \(x^2\) 的分数,用 ...

  2. 题解 Sue的小球/名次排序问题/方块消除/奥运物流

    Sue的小球 名次排序问题 方块消除 奥运物流 Sue的小球 题目大意 有 \(n\) 个小球在下落,初始位置 \((x_i,y_i)\),下落速度为 \(v_i\).你初始位置在 \(x_0\),速 ...

  3. [Luogu2135] 方块消除【区间Dp】

    Online Judge:P2135 方块消除(这题不用预处理) Label:区间Dp 题目描述 Jimmy最近迷上了一款叫做方块消除的游戏.游戏规则如下:n个带颜色方格排成一列,相同颜色的方块连成一 ...

  4. Blocks题解(区间dp)

    Blocks题解 区间dp 阅读体验...https://zybuluo.com/Junlier/note/1289712 很好的一道区间dp的题目(别问我怎么想到的) dp状态 其实这个题最难的地方 ...

  5. [BNUZOJ1261][ACM][2016北理校赛]方块消除(栈,字符串)

    玩过方块消除游戏吗?现在规定当有两个或两个以上相邻且颜色相同的方块在一起的时候,它们就会产生消除反应.当存在多个消除反应同时产生时,最下的反应先执行.现在只给你其中一列,求最后剩下的方块结果. 输入要 ...

  6. P2135 方块消除

    题目描述 Jimmy最近迷上了一款叫做方块消除的游戏.游戏规则如下:n个带颜色方格排成一列,相同颜色的方块连成一个区域(如果两个相邻方块颜色相同,则这两个方块属于同一区域).为简化题目,将连起来的同一 ...

  7. luogu P2135 方块消除 |dp

    题目描述 Jimmy最近迷上了一款叫做方块消除的游戏.游戏规则如下:n个带颜色方格排成一列,相同颜色的方块连成一个区域(如果两个相邻方块颜色相同,则这两个方块属于同一区域).为简化题目,将连起来的同一 ...

  8. 「THUSC 2016」成绩单 & 方块消除 (区间dp)

    成绩单 $f[l][r][mi][mx]$表示从l到r发到还没发的部分的最小值为mi最大值为mx时的最小代价. $f[l][r][0][0]$表示从l到r全部发完的代价. 自己写的无脑dp,枚举中转点 ...

  9. poj 1390 Blocks (经典区间dp 方块消除)

    Blocks Time Limit: 5000MS   Memory Limit: 65536K Total Submissions: 4250   Accepted: 1704 Descriptio ...

随机推荐

  1. 解决 ubuntu 开机卡死在输入密码界面 && 键盘鼠标失灵!!

    近期不知安装了什么package,导致 ubuntu 开机后键盘鼠标一直没法用,刚开始以为是 ubuntu 桌面环境崩溃了,后来发现系统能显示连接到网络.时间也在运行,那应该就是键盘鼠标失灵了. 网上 ...

  2. centos 启动一个tcp服务程序

    需要先yum安装: yum install nc 启动服务: nc -l 80

  3. 大话设计模式Python实现-适配器模式

    适配器模式(Adapter Pattern):将一个类的接口转换成为客户希望的另外一个接口. 下面是一个适配器模式的demo: #!/usr/bin/env python # -*- coding:u ...

  4. Gin框架 - 数据绑定和验证

    概述 上篇文章分享了 Gin 框架使用 Logrus 进行日志记录,这篇文章分享 Gin 框架的数据绑定与验证. 有读者咨询我一个问题,如何让框架的运行日志不输出控制台? 解决方案: engine : ...

  5. HM NIS Edit制作安装包时检测是否有.net4.6环境,没有的时候自动安装。

    把.net4.6安装包打包进安装程序. 关键脚本如下: 头部引用字符串对比库 !include "WordFunc.nsh" 新建一个Section,.Net4.6的文件版本号是4 ...

  6. 百度编辑器UEditor,保存图片的配置问题

    前言: 在使用百度编辑器UEditor的时候,如何将图片保存到服务器,我刚开始以为是要自己写上传文件的方法,后来发现只需要配置一下即可,如果你也正在使用百度富文本编辑器UEditor的话,这篇文章将非 ...

  7. DevExpress的TreeList实现节点上添加自定义右键菜单并实现删除节点功能

    场景 Winform控件-DevExpress18下载安装注册以及在VS中使用: https://blog.csdn.net/BADAO_LIUMANG_QIZHI/article/details/1 ...

  8. SpringBoot自定义注解、AOP打印日志

    前言 在SpringBoot中使用自定义注解.aop切面打印web请求日志.主要是想把controller的每个request请求日志收集起来,调用接口.执行时间.返回值这几个重要的信息存储到数据库里 ...

  9. java 微信自定义菜单 java微信接口开发 公众平台 SSM redis shiro 多数据源

    A 调用摄像头拍照,自定义裁剪编辑头像,头像图片色度调节B 集成代码生成器 [正反双向](单表.主表.明细表.树形表,快速开发利器)+快速表单构建器 freemaker模版技术 ,0个代码不用写,生成 ...

  10. JavaScript AJAX PHP

    AJAX PHP示例 AJAX用于创建更多交互式应用程序. 以下示例演示了当用户在输入字段中键入字符时,网页如何与Web服务器通信: <!DOCTYPE html> <html> ...