吉诺斯在手机上玩祖玛的游戏。在这个游戏中,刚开始有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. robot:当用例失败时执行关键字(发送短信)

    使用场景: 当用例失败时需要通知对应人员,则需要在Teardown中,使用关键字Run Keyword If Test Failed Send Message关键字为自定义关键字,${content} ...

  2. 【VS开发】MFC动态设置对话框属性 弹出或嵌入

    参考: MFC的对话框CDialog是怎么控制窗口可调整大小的属性的呢?打开资源文件,对话框资源的属性列表中,有一个"Border"项,改变该项的值就可以改变窗口边框风格.实际上w ...

  3. Postgresql中的large object

    1.初识postgresql large object 一位同事在对使用pg_dump备份出来的文件(使用plain格式)进行恢复时,觉得速度非常慢,让我分析一下是什么原因. 我拿到他的.bak文件, ...

  4. Mechanical Simulation借助UE发力自动驾驶仿真

    Source https://www.unrealengine.com/en-US/blog/making-autonomous-vehicles-safer-before-they-hit-the- ...

  5. mvn命令着中package、install、deploy的区别

    参考:https://blog.csdn.net/zhaojianting/article/details/80324533 常用操作区别 mvn clean package 依次执行了clean.r ...

  6. Quartus II——工程建立和常用设置

    Quartus ii是针对Altera FPGA的一款EDA软件,在此以一个led闪烁工程来简单说一下基本操作: 一.注意事项 Quartus ii最大的注意事项就一点:工程名称以及工程里面的文件名称 ...

  7. UI单据字段值查看方式

    1.单据界面右键属性,获取当前单据URL连接:http://172.16.168.12/U9/erp/display.aspx?lnk=SCM.INV.INV2020_10&sId=3017n ...

  8. LOJ2267 SDOI2017 龙与地下城 FFT、概率密度函数、Simpson

    传送门 概率论神仙题-- 首先一个暴力做法是设\(f_{i,j}\)表示前\(i\)个骰子摇出点数和为\(j\)的概率,不难发现DP的过程是一个多项式快速幂,FFT优化可以做到\(O(XYlog(XY ...

  9. C# 连接SQLServer数据库自动生成model类代码

    Program.cs using System; using System.Collections.Generic; using System.Linq; using System.Threading ...

  10. 易百教程人工智能python修正-人工智能数据准备-标记数据

    我们已经知道,某种格式的数据对于机器学习算法是必需的. 另一个重要的要求是,在将数据作为机器学习算法的输入发送之前,必须正确标记数据. 例如,如果所说的分类,那么数据上会有很多标记. 这些标记以文字, ...