题意

给你一个串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. electron 开发实时加载

    第一个方式 cnpm install electron-reload --save-dev cnpm install electron-prebuilt --save-dev require('ele ...

  2. python实现微信自动回复机器人

    一 简单介绍 wxpy基于itchat,使用了 Web 微信的通讯协议,,通过大量接口优化提升了模块的易用性,并进行丰富的功能扩展.实现了微信登录.收发消息.搜索好友.数据统计等功能. 总而言之,可用 ...

  3. 使用IdentityServer4实现一个简单的Oauth2客户端模式授权

    1.首先新建一个webAPI项目做为IdentityServer的服务端,提供生成Token的服务,首先修改Startup.cs文件,如下图: 2.增加一个Config.cs文件,以便于提供资源和认证 ...

  4. 12.17 Daily Scrum

      Today's Task Tomorrow's Task 丁辛 实现和菜谱相关的餐厅列表. 实现和菜谱相关的餐厅列表.             邓亚梅             美化搜索框UI. 美 ...

  5. json.dumps()和json.loads()

    json.dumps()用于将字典形式的数据转化为字符串,json.loads()用于将字符串形式的数据转化为字典,代码: import json data = { 'name' : 'Connor' ...

  6. beta版验收互评

    排名 团队名称 项目名称 优点 缺点,bug 报告 1 别看了你没救了队 校园帮帮帮(已发布) 实现普通用户的登陆,修改个人信息,发布信息,下订单的功能:管理员登陆,修改个人信息,发布信息,下订单,增 ...

  7. FZU软工实践–团队成员交换交接情况

    0.前言 本次交接主要是为了之后Beta冲刺工作可以更加顺利而进行的.因为我跟其他队友交互不够方便,而且我们项目当前比较缺做前端的人员,后端功能已基本实现.所以我换出来了.希望大家可以顺顺利利做完一步 ...

  8. TimeLine CSS/Javascript 时间线

    https://casbootadminserver.herokuapp.com/#/applications/23bd8218/trace

  9. [转帖]老狼:你知道哪些关于 Windows 10 的骚操作?

    作者:老狼链接:https://www.zhihu.com/question/265781599/answer/579939418来源:知乎著作权归作者所有.商业转载请联系作者获得授权,非商业转载请注 ...

  10. 使用非服务器磁盘(MBROnly)安装ESXi时的方法.

    From ESXi 5.0, if you install ESXi to a empty hard disk, the target disk will be prepared with GPT-b ...