题意

给你一个串s,每次可以花费1的代价删去一个子串,要求子串的每一位为同一个字符。
求删去整个串的最小代价。


分析

这是一道非常简单的区间\(DP\)问题,我们定义\(f[i][j]\)表示删去子串\([i,j]\)的最小花费。
就像合并石子一样,我们枚举中间的\(k\),k的范围是\(i\)~\(j\)。
为了方便解决问题,将k的定义域定义成一个半闭半合区间\([i,j)\),或者是\((i,j]\) 都可以,我们题解以\([i,j)\)为准。
决策考虑以下:

  • 如果\(s[k]=s[j]\),那么说明当前的区间可以进行消除。
  • 反之,则不能消除。
    那么状态转移方程就是:\(f[i][j]=min(f[i][j],f[i][k]+f[k+1][j]+1-(s[k]=s[j]))\)。

ac代码

#include <bits/stdc++.h>
#define N 505
#define inf 0x3f3f3f3f
using namespace std;
char s[N];
int f[N][N];
int len;
int main() {
    scanf("%d%s", &len, s);
    for (int i = 0; i < len; i ++) f[i][i] = 1;
    for (int i = 1; i < len; i ++)
        for (int j = 0; j < i; j ++) {
            f[j][i] = inf;
            for (int k = j; k < i; k ++)
                f[j][i] = min(f[j][i], f[j][k] + f[k + 1][i - 1] + 1 - (int)(s[k] == s[i]));
        }
    printf("%d\n",f[0][len - 1]);
    return 0;
}

[CF1132F]Clear the String的更多相关文章

  1. 【CF1132F】Clear the String(动态规划)

    [CF1132F]Clear the String(动态规划) 题面 CF 题解 考虑区间\(dp\). 增量考虑,每次考虑最后一个字符和谁一起删去,然后直接转移就行了. #include<io ...

  2. 【CF1132F】Clear the String (DP)

    /* 区间dp题目, 考虑当前区间l,r 是可以枚举最后一次拿的分界点来考虑最右边节点是不是具有贡献 */ #include<cstdio> #include<algorithm&g ...

  3. CodeForces-1132F Clear the String

    题目链接 https://vjudge.net/problem/CodeForces-1132F 题面 Description You are given a string \(s\) of leng ...

  4. codeforces#1132 F. Clear the String(神奇的区间dp)

    题意:给出一个字符串S,|S|<=500.每次操作可以删除一段连续的相同字母的子串.问,最少操作多少次可以把这个字符串变成空串. 分析:刚开始的思路是,把连续的串给删除掉,然后再....贪心.完 ...

  5. 【Codeforces 1132F】Clear the String

    Codeforces 1132 F 题意:给一个串\(S\),问每次删除连续的一段相同字母,最少删几次将原串删空. 思路:考虑区间\(dp\),我们看要删多少次能把\([l,r]\)删空,那么最终答案 ...

  6. F. Clear the String(区间 DP )//每次都删除一个相同字符的子串 , 最小多少次

    https://codeforces.com/contest/1132/problem/F 借鉴:https://www.cnblogs.com/chhokmah/p/10508762.html 题意 ...

  7. eduCF#61 F. Clear the String /// 区间DP 消除连续一段相同字符 全部消完的最少次数

    题目大意: 给定字符串 每次消除可消除连续的一段相同的字符的子串 求消除整个字符串的最少消除次数 #include <bits/stdc++.h> using namespace std; ...

  8. CF集萃1

    因为cf上一堆水题,每个单独开一篇博客感觉不太好,就直接放一起好了. CF1096D Easy Problem 给定字符串,每个位置删除要代价.求最小代价使之不含子序列"hard" ...

  9. List集合的removeAll(Collection<E> col) 和clear方法的区别

    //removeAll()方法private static void testList(){ List<String> list = new ArrayList<String> ...

随机推荐

  1. VM下设置CenOS为静态IP

    在本机利用VM启动了4台虚拟机来搭建zookeeper集群,但是每次电脑重启后,虚拟机的IP都会变化,现在想来固定每台虚拟机的IP. 1.Step1:查看网关和子网掩码 记住选用NAT模式,点击NAT ...

  2. ElasticSearch实践系列(一):安装

    Elasticsearch简介 Elasticsearch是一个高度可扩展的开源全文搜索和分析引擎.它允许您快速,近实时地存储,搜索和分析大量数据.它通常用作底层引擎/技术,为具有复杂搜索功能和要求的 ...

  3. Awesome Python,Python的框架集合

    Awesome Python A curated list of awesome Python frameworks, libraries and software. Inspired by awes ...

  4. CEPH Object Gateway

    参考文档: CEPH OBJECT GATEWAY:http://docs.ceph.com/docs/master/radosgw/ 一.环境准备 1. Ceph Object Gateway框架 ...

  5. 利用阿里云的源yum方式安装Mongodb

    今天在线上服务器上安装MongoDB,从Mongo官网直接下载链接,结果在下载时发觉速度慢的可怜.迫于无奈,只能找国内的镜像下载.这里选择阿里云的源进行安装,记录如下: 1)在/etc/yum.rep ...

  6. 【个人阅读】软件工程M1/M2做一个总结

    1.以前博客链接 http://www.cnblogs.com/penglinjiang/p/4027850.html http://www.cnblogs.com/penglinjiang/p/40 ...

  7. Personal Reading Assignment 2 -读推荐文章有感以及项目开发目前总结

    在经过个人作业和结对作业的磨练和现在正在进行的团队作业的考验中,我对自己软件开发的一点得失有了些许感悟,同时读了老师推荐的文章后,自己也是有了一些感受. 首先在“No Silver Bullet”一文 ...

  8. java 计算器实验

    1.计算器实验报告 2.https://github.com/xujinxia/text/tree/master 3.实验截图 7+8 清除 六.总结 通过本次实验让我对JFrame类.JPanel类 ...

  9. Caffe2的安装

    源码下载 首先下载caffe2的源码:https://github.com/caffe2/caffe2 网上都建议使用git命令下载,因为caffe2依赖了很多第三方模块,git会根据依赖自动下载第三 ...

  10. Eclipse版本列表

    https://wiki.eclipse.org/Older_Versions_Of_Eclipse http://blog.csdn.net/jaycee110905/article/details ...