传送门

题意:

给你一串由大写字符组成的长度为\(n\)字符串,现在你每次可以让区间\([l,r]\)的所有字符变成任意一种字符。现在问你把一个长度为\(n\)的空串变为指定的字符串需要多少多少次操作。

分析:

这个问题在基础区间dp中夹杂了贪心的思想。

我们考虑\(dp[l][r]\)为区间\([l,r]\)进行染色取得了对应的值的最小的操作数。在此基础上,我们贪心的考虑,对于一个大的区间\([l,r]\),倘若区间两端的字符是相同的,即\(str[l]==str[r]\),要使得答案更优,则这个大的区间只需要通过子区间\([l+1,r]\)或者子区间\([l,r-1]\),通过染成同一种颜色,花费\(1\)点代价转移而来。而倘若区间两端的字符不相同,则这段区间是由这段区间的两个子区间转移而来的,此时我们只需要用最基本的区间dp的讨论,通过枚举断点\(k\)进行状态转移。

代码:

#include <bits/stdc++.h>
#define maxn 105
using namespace std;
int dp[maxn][maxn],a[maxn];
char str[maxn];
const int inf=0x3f3f3f3f;
int main()
{scanf("%s",str+1);int n=strlen(str+1);for(int i=1;i<=n;i++)for(int j=1;j<=n;j++)dp[i][j]=inf;for(int i=1;i<=n;i++){dp[i][i]=1;}for(int p=1;p<=n;p++){for(int i=1,j=i+p;j<=n&&i<=n;i++,j=i+p){if(str[i]==str[j]) dp[i][j]=min(dp[i+1][j],dp[i][j-1]);elsefor(int k=i;k<j;k++){dp[i][j]=min(dp[i][j],dp[i][k]+dp[k+1][j]);}}}printf("%d\n",dp[1][n]);return 0;
}

转载于:https://www.cnblogs.com/Chen-Jr/p/11216286.html

bzoj 1260 (区间dp)相关推荐

  1. bzoj 1260: [CQOI2007]涂色paint(区间DP)

    1260: [CQOI2007]涂色paint Time Limit: 30 Sec  Memory Limit: 64 MB Submit: 1681  Solved: 1018 [Submit][ ...

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

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

  3. [BZOJ 4350]括号序列再战猪猪侠 题解(区间DP)

    [BZOJ 4350]括号序列再战猪猪侠 Description 括号序列与猪猪侠又大战了起来. 众所周知,括号序列是一个只有(和)组成的序列,我们称一个括号 序列S合法,当且仅当: 1.( )是一个 ...

  4. 【BZOJ 4565】 [Haoi2016]字符合并 区间dp+状压

    考试的时候由于总是搞这道题导致爆零~~~~~(神™倒序难度.....) 考试的时候想着想着想用状压,但是觉得不行又想用区间dp,然而正解是状压着搞区间,这充分说明了一件事,状压不是只是一种dp而是一种 ...

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

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

  6. bzoj 1003物流运输 区间dp+spfa

    基本思路: 一开始确实没什么思路,因为觉得怎么着都会超时,然后看一下数据范围,呵,怎么都不会超时. 思路: 1.看到能改变线路,想到可以用以下区间dp,区间dp的话,先枚举长度,枚举开始位置,然后枚举 ...

  7. bzoj 1710: [Usaco2007 Open]Cheappal 廉价回文【区间dp】

    只要发现添加一个字符和删除一个字符是等价的,就是挺裸的区间dp了 因为在当前位置加上一个字符x就相当于在他的对称位置删掉字符x,所以只要考虑删除即可,删除费用是添加和删除取min 设f[i][j]为从 ...

  8. BZOJ 4380 Myjnie 区间DP

    4380: [POI2015]Myjnie Time Limit: 40 Sec  Memory Limit: 256 MBSec  Special Judge Submit: 162  Solved ...

  9. bzoj4565 [HAOI2016]字符合并 结论+状压+区间dp

    如果k==2的话就是记搜, 但这个题用记搜的思路的话是需要枚举k个断点的, 所以对于枚举断点,就很可能有优化,比如到一个断点,一个决策的最优值 于是考虑区间dp模型,相当于是插入一个数,然后看影响. ...

  10. POJ 2955 Brackets (区间DP)

    题目链接:http://poj.org/problem?id=2955 Brackets Time Limit: 1000MS   Memory Limit: 65536K Total Submiss ...

最新文章

  1. 腾讯会议用户突破1亿,发布企业版最高支持2000人同时参会
  2. exports、module.exports和export、export default到底是咋回事
  3. 切片slice(python)
  4. Spark内存管理(2)—— 统一内存管理
  5. OSI七层与TCP/IP四/五层网络架构
  6. CentOS 7 安装nginx
  7. 解决 Visual Studio 中代码注释自动折叠的问题
  8. 好的设计善于利用PSD模板,轻松搞定促销海报!
  9. XHTML的特征(规范)
  10. BAT54C不断电源保护电路
  11. 字节版 趣味测试小程序源码
  12. 网易云音乐encseckey算法php,求助网易云音乐_secretKey及_encSecKey获取
  13. 南阳oj 57题------6174问题
  14. 企业级WEB应用服务器TOMCAT
  15. 【greenplum】 获取表结构,实现类似mysql show create table 功能
  16. 微信小程序第五篇:页面弹出效果及共享元素动画
  17. 织梦DedeCMS管理员动态密码登录插件下载
  18. mel表达式_MEL语法
  19. 市场上五花八门的固码
  20. 冬季赚钱项目有哪些?怎么快速赚钱?

热门文章

  1. 大写汉字转阿拉伯数字c语言,将输入的阿拉伯数字变换的汉字的大写输出
  2. windows server winrm介绍
  3. 一个Scrapy爬虫实例
  4. gclient多源码管理工具 DEPS文件
  5. Linux命令c++filt
  6. python学习第二天——编写名片
  7. C语言——快速取以2为底x的对数
  8. 我奋斗了十八年不是为了和你一起喝杯咖啡
  9. c语言 椭圆周长,高中数学公式大全
  10. lenovo启动热键_联想笔记本进bios按什么键|联想笔记本开机进入bios热键是哪个