吉诺斯在手机上玩祖玛的游戏。在这个游戏中,刚开始有n个石头排成一排,第i个石头的颜色是ci。游戏的目标是尽可能快的把所有石头都消掉。

每一秒钟,吉诺斯可以选择一段连续的子段,并且这个子段是回文,然后把它消去,剩下的石头会向中间靠近,把之前消去的石头的空隙补上。按照这样的规则,最少要几次把n个石头都消去。

样例解释:

先把4 4消去,然后把1 2 3 2 1一起消去。

收起

 

输入

单组测试数据。
第一行输入一个整数 n (1≤n≤500) ,表示石头的数目。
第二行有n个整数,第i个数字表示ci (1≤ci≤n) 。

输出

输出一行,表示答案。

输入样例

7
1 4 4 2 3 2 1

输出样例

2

区间dp。对于一个区间[l,r],选择次数最小的情况可以选定一个k,用dp[l][k]+dp[k][r]来更新,如果s[l]==s[r]那么dp[l+1][r-1]也要参与更新。

代码:
#include <iostream>
#include <cstdlib>
#include <cstdio>
#include <cmath>
#include <algorithm>
#define inf 0x3f3f3f3f
using namespace std;
int s[];
int dp[][];
int get(int l,int r) {
if(l > r) return ;
if(dp[l][r]) return dp[l][r];
dp[l][r] = inf;
for(int i = l;i < r;i ++) {
dp[l][r] = min(dp[l][r],get(l,i) + get(i + ,r));
}
if(s[l] == s[r]) dp[l][r] = min(dp[l][r],get(l + ,r - ));
return dp[l][r];
}
int main() {
int n;
scanf("%d",&n);
for(int i = ;i < n;i ++) {
scanf("%d",&s[i]);
dp[i][i] = ;
}
printf("%d",get(,n - ));
return ;
}
#include <iostream>
#include <cstdlib>
#include <cstdio>
#include <cmath>
#include <algorithm>
using namespace std;
int s[];
int dp[][]; int main() {
int n;
scanf("%d",&n);
for(int i = ;i < n;i ++) {
scanf("%d",&s[i]);
dp[i][i] = ;
if(i) dp[i - ][i] = - (s[i] == s[i - ]);
}
for(int i = ;i < n;i ++) {
for(int j = ;j + i < n;j ++) {
int d = j + i;
dp[j][d] = ((s[j] == s[d]) ? dp[j + ][d - ] : i + );
for(int k = j;k < d;k ++) {
dp[j][d] = min(dp[j][d],dp[j][k] + dp[k + ][d]);
}
}
}
printf("%d",dp[][n - ]);
return ;
}

51nod 1720 祖玛的更多相关文章

  1. 【51Nod 1244】莫比乌斯函数之和

    http://www.51nod.com/onlineJudge/questionCode.html#!problemId=1244 模板题... 杜教筛和基于质因子分解的筛法都写了一下模板. 杜教筛 ...

  2. 51Nod 1268 和为K的组合

    51Nod  1268  和为K的组合 1268 和为K的组合 基准时间限制:1 秒 空间限制:131072 KB 分值: 20 难度:3级算法题 给出N个正整数组成的数组A,求能否从中选出若干个,使 ...

  3. 51Nod 1428 活动安排问题

    51Nod   1428  活动安排问题 Link: http://www.51nod.com/onlineJudge/questionCode.html#!problemId=1428 1428 活 ...

  4. 51Nod 1278 相离的圆

    51Nod 1278 相离的圆 Link: http://www.51nod.com/onlineJudge/questionCode.html#!problemId=1278 1278 相离的圆 基 ...

  5. 【51Nod 1501】【算法马拉松 19D】石头剪刀布威力加强版

    http://www.51nod.com/onlineJudge/questionCode.html#!problemId=1501 dp求出环状不连续的前缀和,剩下东西都可以算出来,比较繁琐. 时间 ...

  6. 【51Nod 1622】【算法马拉松 19C】集合对

    http://www.51nod.com/onlineJudge/questionCode.html#!problemId=1622 简单题..直接暴力快速幂 #include<cstdio&g ...

  7. 【51Nod 1616】【算法马拉松 19B】最小集合

    http://www.51nod.com/onlineJudge/questionCode.html#!problemId=1616 这道题主要是查询一个数是不是原有集合的一个子集的所有数的gcd. ...

  8. 【51Nod 1674】【算法马拉松 19A】区间的价值 V2

    http://www.51nod.com/onlineJudge/questionCode.html#!problemId=1674 对区间分治,统计\([l,r]\)中经过mid的区间的答案. 我的 ...

  9. 随便玩玩系列之一:SPOJ-RNG+51nod 算法马拉松17F+51nod 1034 骨牌覆盖v3

    先说说前面的SPOJ-RNG吧,题意就是给n个数,x1,x2,...,xn 每次可以生成[-x1,x1]范围的浮点数,把n次这种操作生成的数之和加起来,为s,求s在[A,B]内的概率 连续形的概率 假 ...

随机推荐

  1. 通过ip远程控制电脑

    现在,很多人都用了不止一台电脑,而同时操作两台电脑是一件比较麻烦的事情,所以,如果能够使用一台电脑的鼠标键盘显示器,去远程控制另一台电脑,那就方便多了. 远程计算机设置 1.先确保本地计算机和远程计算 ...

  2. linux查看磁盘是否SSD盘

    命令: cat /sys/block/sda/queue/rotational 注意: 命令中的sba是你的磁盘名称,可以通过df命令查看磁盘,然后修改成你要的 结果: 返回0:SSD盘 返回1:SA ...

  3. spring boot @RequestBody数据传递及解析

    @RequestBody需要接的参数是一个string化的json @RequestBody,要读取的数据在请求体里,所以要发post请求,还要将Content-Type设置为application/ ...

  4. spring中最重要的一些Aware接口

    附上关于这节的spring官方文档: ApplicationContextAware and BeanNameAware aware接口在spring中无处不在,它是用来感知spring的ioc co ...

  5. SpringBoot常用注解(一)

    控制层:controller 1.@RestController注解相当于@ResponseBody + @Controller合在一起的作用.即这样写每一个方法返回的是 JSON 类型的数据. 2. ...

  6. vcf和bed的位置信息区别

    vcf和bed的位置信息区别 vcf和gff一般是从1-base开始计数,也就是文件里所代表的的位置是染色体的真实位置 bed文件一般所代表的位置是从0开始计数的,是一个半闭合区间,也就是(0,200 ...

  7. TCP/IP学习笔记12-- IP协议基础

    IP(internet protocol, 网际协议) IP相当于OSI参考模型中的第三层 -- 网络层. --网络层的下一层--数据链路层的主要作用是在 同一种数据链路 的节点之间进行包传递,而一旦 ...

  8. vue封装一个简单的div框选时间的组件

    记录一下我前段时间封装的一个vue组件吧.技术需要积累,有时间我把我之前写的还不错的组件都开源出来.并尝试vue和react 两种方式的组件封装.今天简单写下鼠标框选div选中效果的封装吧. div框 ...

  9. Python 爬取陈都灵百度图片

    Python 爬取陈都灵百度图片 标签(空格分隔): 随笔 今天意外发现了自己以前写的一篇爬虫脚本,爬取的是我的女神陈都灵,尝试运行了一下发现居然还能用.故把脚本贴出来分享一下. import req ...

  10. 隐藏GridControl的“Drag a column header here to group by that column”

    打开设计器,找到OptionsView,往下拉设置showGroupPanel为false