题目大意:依照祖玛的玩法(任意选颜色),给出一段区间。问最少用多少个球可以把全部颜色块都消除。

思路:把输入数据依照连续的块处理。保存成颜色和数量。然后用这个来DP。我们知道,一个单独的块须要两个同样的颜色能够消去,对于这种块f[i][i] = 2。其余的>=2个的块仅仅须要一个,这种块f[i][i] = 1。

转移就比較简单了,依照区间DP的一般思想,最外层循环的是区间长度。中间循环的是起始位置,最后循环的是松弛变量。

特殊情况是这个区间的两边是同一种颜色,多加一个转移方程。

CODE:

#include <cstdio>
#include <cstring>
#include <iostream>
#include <algorithm>
#define MAX 510
using namespace std; pair<int,int> arr[MAX]; int cnt,src[MAX],total;
int f[MAX][MAX]; int main()
{
cin >> cnt;
for(int i = 1; i <= cnt; ++i)
scanf("%d",&src[i]);
int last = src[1],num = 0;
for(int i = 1; i <= cnt; ++i) {
if(src[i] != last) {
arr[++total] = make_pair(last,num);
last = src[i];
num = 1;
}
else ++num;
}
arr[++total] = make_pair(last,num);
memset(f,0x3f,sizeof(f));
for(int i = 1; i <= total; ++i)
if(arr[i].second == 1)
f[i][i] = 2;
else f[i][i] = 1;
for(int k = 2; k <= total; ++k)
for(int i = 1; i + k - 1 <= total; ++i)
{
if(arr[i].first == arr[i + k - 1].first)
f[i][i + k - 1] = f[i + 1][i + k - 2] + (arr[i].second + arr[i + k - 1].second == 2 ? 1:0);
for(int j = 1; j < k; ++j)
f[i][i + k - 1] = min(f[i][i + k - 1],f[i][i + j - 1] + f[i + j][i + k - 1]);
}
cout << f[1][total] << endl;
return 0;
}

BZOJ 1032 JSOI 2007 祖码Zuma 区间DP的更多相关文章

  1. [BZOJ 1032][JSOI 2007]祖玛 题解(区间DP)

    [BZOJ 1032][JSOI 2007]祖玛 Description https://www.lydsy.com/JudgeOnline/problem.php?id=1032 Solution ...

  2. [BZOJ1032][JSOI2007]祖码Zuma 区间dp

    1032: [JSOI2007]祖码Zuma Time Limit: 10 Sec  Memory Limit: 162 MB Submit: 1105  Solved: 576 [Submit][S ...

  3. 【BZOJ 1032】 [JSOI2007]祖码Zuma

    [题目链接]:http://www.lydsy.com/JudgeOnline/problem.php?id=1032 [题意] [题解] /* 设f[i][j]表示从第i个珠子开始的j个珠子被消除; ...

  4. BZOJ 1032 [JSOI2007]祖码Zuma

    1032: [JSOI2007]祖码Zuma Time Limit: 10 Sec  Memory Limit: 162 MBSubmit: 637  Solved: 318[Submit][Stat ...

  5. bzoj千题计划120:bzoj1032[JSOI2007]祖码Zuma

    http://www.lydsy.com/JudgeOnline/problem.php?id=1032 https://www.luogu.org/discuss/show?postid=8416 ...

  6. bzoj1032 [JSOI2007]祖码Zuma

    1032: [JSOI2007]祖码Zuma Time Limit: 10 Sec  Memory Limit: 162 MBSubmit: 672  Solved: 335[Submit][Stat ...

  7. [JSOI2007]祖码Zuma

    题目描述 这是一个流行在Jsoi的游戏,名称为祖玛. 精致细腻的背景,外加神秘的印加音乐衬托,彷佛置身在古老的国度里面,进行一个神秘的游戏——这就是著名的祖玛游戏.祖玛游戏的主角是一只石青蛙,石青蛙会 ...

  8. 【BZOJ】1044: [HAOI2008]木棍分割 二分+区间DP

    链接:http://www.lydsy.com/JudgeOnline/problem.php?id=1044 Description 有n根木棍, 第i根木棍的长度为Li,n根木棍依次连结了一起, ...

  9. CF607B Zuma(区间dp)

    题意 题目链接 Sol 裸的区间dp,转移的时候判一下两个字符是否相等即可 #include<bits/stdc++.h> #define Pair pair<int, int> ...

随机推荐

  1. 解决su – 后显示-bash-4.1#

    <1>现象 设置tfs的管理用户时. su - admin时,出现 -bash-4.1# <2>解决 chown  admin:admin /home/admin        ...

  2. dfs序题目练习

    参考博文:http://blog.csdn.net/qwe2434127/article/details/49819975 http://blog.csdn.net/qq_24489717/artic ...

  3. JavaScript 执行环境 与 变量对象

    什么是JS的执行环境? function funA(){ //一段代码静静的躺在这里,不能叫执行环境 } funA(); //当代码开始执行以后,系统会将它存入执行栈,并为他准备好足够的内存空间使用 ...

  4. CCTF部分赛题分析

    这次算是跟着师傅们全程打完了CCTF的线上赛,一些强队的WriteUp也放了出来.这篇文章主要是想跟着大牛的思路把那些题重新再过一遍. PWN3 这个是格式化字符串漏洞的题.printf的格式化串直接 ...

  5. Qt 下载列表地址

    每次下载Qt总是找好长时间,收藏一下地址 Qt 下载列表地址 https://www.qt.io/download-open-source/#section-9 教育网镜像下载 http://mirr ...

  6. MQTT协议以及库函数说明

    内容简介:之前我们写了一篇ESP8266AT指令的说明文档,在客户端连接上服务器之后,接下来便是网络通信.为此我们又写了这一片MQTT协议的说明文档,更加深层次的讲述了通信的原理.此文档只是我们在调试 ...

  7. 【LOJ】#2133. 「NOI2015」品酒大会

    题解 想出了一个神奇的技巧 我们先把串反过来(因为我们需要起始位置的值而不是终止位置的值),每个点维护一下 fail树上子树里的点,作为正数绝对值最大的两个数,作为负数绝对值最大的两个数 我们发现这个 ...

  8. SaltStack的salt-ssh使用及LAMP状态设计部署(五)

    一.salt-ssh的使用 官方文档:https://docs.saltstack.com/en/2016.11/topics/ssh/index.html (1)安装salt-ssh [root@l ...

  9. eclipse重的自动提示与行号和快捷图标的显示

    显示行号:Window->Preferences->Gerenal->Editors->Text Editors然后在show line number上打对勾自动提示:Wind ...

  10. c# winform读取及发送串口信号

    请参考C#的API文档:https://docs.microsoft.com/zh-cn/dotnet/api/system.io.ports.serialport?redirectedfrom=MS ...