题目大意:给定一个祖玛序列,任选颜色射♂出珠子,问最少射♂出多少珠子

输入法近期越来越奇怪了0.0

首先我们把连续同样的珠子都缩在一起 令f[i][j]表示从i開始的j个珠子的最小消除次数

初值 f[i][1]=cnt[i]==1?2:1

然后对于每一个区间。我们枚举中间点,拆成两半求和

假设这个区间两端点颜色同样。我们还能够把中间消掉,然后两边再补射1或0个

尼玛珠子的颜色能够是0……由于这个WA了半天 真~!@#$%^&*()

此外此题是有BUG的 我的代码不能考虑将三个离散的珠子 聚在一起的情况 可是AC了

例:

7

1 2 2 1 3 3 1

ans:2

因此我又写了第二个版本号,在区间两側的珠子都是单个的时候去区间内部寻找第三个单个的珠子,结果数据原因WA掉了。可是确实能够过这组数据

希望官方能够把数据更新一下~(@^_^@)~

#include<cstdio>
#include<cstring>
#include<iostream>
#include<algorithm>
#define M 510
using namespace std;
int n;
pair<int,int>a[M];
int f[M][M];
int main()
{
int i,j,k,x;
cin>>n;
a[0].first=19980402;
for(i=1,j=0;i<=n;i++)
{
scanf("%d",&x);
if(x!=a[j].first)
a[++j].first=x;
a[j].second++;
}
n=j;
memset(f,0x3f,sizeof f);
for(i=1;i<=n;i++)
f[i][1]=a[i].second==1?2:1;
for(j=2;j<=n;j++)
for(i=1;i+j-1<=n;i++)
{
if(a[i].first==a[i+j-1].first)
f[i][j]=f[i+1][j-2]+(a[i].second+a[i+j-1].second==2?1:0);
for(k=1;k<j;k++)
f[i][j]=min(f[i][j],f[i][k]+f[i+k][j-k]);
}
cout<<f[1][n]<<endl;
}

能过那组数据可是WA掉的代码

#include<cstdio>
#include<cstring>
#include<iostream>
#include<algorithm>
#define M 510
using namespace std;
int n;
pair<int,int>a[M];
int f[M][M];
int main()
{
int i,j,k,x;
cin>>n;
a[0].first=19980402;
for(i=1,j=0;i<=n;i++)
{
scanf("%d",&x);
if(x!=a[j].first)
a[++j].first=x;
a[j].second++;
}
n=j;
memset(f,0x3f,sizeof f);
for(i=1;i<=n;i++)
f[i][1]=a[i].second==1?2:1;
for(j=2;j<=n;j++)
for(i=1;i+j-1<=n;i++)
{
if(a[i].first==a[i+j-1].first)
{
if(a[i].second+a[i+j-1].second==2)
{
f[i][j]=f[i+1][j-2]+1;
for(k=2;k<j;k++)
if(a[i+k-1].first==a[i].first&&a[i+k-1].second==1)
f[i][j]=min(f[i][j],f[i+1][k-2]+f[i+k][j-k-1]); }
else
f[i][j]=f[i+1][j-2];
}
for(k=1;k<j;k++)
f[i][j]=min(f[i][j],f[i][k]+f[i+k][j-k]);
}
cout<<f[1][n]<<endl;
}

BZOJ 1032 JSOI2007 祖码Zuma 动态规划的更多相关文章

  1. BZOJ 1032 [JSOI2007]祖码Zuma

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

  2. 1032: [JSOI2007]祖码Zuma

    链接:http://www.lydsy.com/JudgeOnline/problem.php?id=1032 Description 这是一个流行在Jsoi的游戏,名称为祖玛.精致细腻的背景,外加神 ...

  3. BZOJ.1032.[JSOI2007]祖码(区间DP)

    题目链接 BZOJ 洛谷 AC代码: 区间DP,f[i][j]表示消掉i~j需要的最少珠子数. 先把相邻的相同颜色的珠子合并起来. 枚举方法一样,处理一下端点可以碰撞消除的情况就行. 当然合并会出现问 ...

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

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

  5. bzoj1032 [JSOI2007]祖码Zuma

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

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

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

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

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

  8. [JSOI2007]祖码Zuma

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

  9. BZOJ 1032 JSOI 2007 祖码Zuma 区间DP

    题目大意:依照祖玛的玩法(任意选颜色),给出一段区间.问最少用多少个球可以把全部颜色块都消除. 思路:把输入数据依照连续的块处理.保存成颜色和数量.然后用这个来DP.我们知道,一个单独的块须要两个同样 ...

随机推荐

  1. progress 相关事件 异步 ajax

    loadstart — Fires when the fi rst byte of the response has been received.progress — Fires repeatedly ...

  2. JavaSE高级1

    内部类 内部类概念: 所谓内部类(Inner Class),顾名思义,就是将一个类定义在另一个类的内部.内部的类称之为内部类. 内部类的主要特点: 内部类可以很好的实现隐藏,可以使用protected ...

  3. Postman参数化使用以及中文乱码问题解决

    1.参数化详解 准备工作,数据准备 2.使用csv文件时中文乱码可以通过使用txt文本,json文本改变调用json文件改变文件的编码格式解决 3:参数化数据调用的两种方式通过调用读取文件传入环境变量 ...

  4. HTTP协议相关知识点

    主要参考 http://www.imooc.com/article/14397,来源:慕课网,作者种子_fe HTTP是超文本传输协议,主要特点有: 支持客户.服务器模式 简单快速:客户向服务器请求服 ...

  5. css-子div设置margin-top影响父div

    父元素的第一个子元素的上边距margin-top如果碰不到有效的border或者padding.就会不断一层一层的找自己父元素,祖先元素,所有需要在父元素设置border,或者padding

  6. WPF学习之路一

    前段时间一直在学习MVC,工作需要,现在需要180度急转弯,搞WPF,MVVM,只能找资料学习了. WPF中有一个消息机制,就是当前台控件绑定的值改变时,会自动通知到指定的事件来改变VM的值,反之亦然 ...

  7. JDK自带VM分析工具jps,jstat,jmap,jconsole

    一.概述 SUN 的JDK中的几个工具,非常好用.秉承着有免费,不用商用的原则.以下简单介绍一下这几种工具.(注:本文章下的所有工具都存在JDK5.0以上版本的工具集里,同javac一样,不须特意安装 ...

  8. ligerUI---下拉菜单(menubar)动态显示(从后台获取数据)

    写在前面: ligerui的下拉菜单是有点丑的,这也是没有办法的事........这里主要记录下,如何从后台获取数据进行菜单显示. 有两种方式:1.使用json数组来动态添加  2.字符串拼接.  其 ...

  9. C++雾中风景3:const用法的小结

    const作为C与C++共有的关键字,很多使用的方式大同小异.但由于C++是一门面向对象的语言,在类和对象中有更多的使用规则.之前学习C语言的时候就被const这个关键字搅得焦头烂额,正巧也借这篇文章 ...

  10. Java精选笔试题

    合抱之木,生于毫末:九层之台,起于垒土:千里之行:始于足下.赶快测测你的Java基础知识掌握的如何? 1,下列说法正确的是() A.一个文件里可以同时存在两个public修饰的类 B.构造函数可以被重 ...