BZOJ 1260 [CQOI2007]涂色paint(区间DP)
【题目链接】 http://www.lydsy.com/JudgeOnline/problem.php?id=1260
【题目大意】
假设你有一条长度为n的木版,初始时没有涂过任何颜色
每次你可以把一段连续的木版涂成一个给定的颜色,后涂的颜色覆盖先涂的颜色
求最少的涂色次数达到目标状态
【题解】
dp[i][j]表示涂抹i到j的最优答案,
显然当i和j相同时,可以从i+1……j,i……j-1,i+1……j-1转移过来,
同时也可以从两个区间组合得到。
【代码】
#include <cstdio>
#include <algorithm>
#include <cstring>
using namespace std;
const int N=100;
int dp[N][N];
char s[N];
int main(){
while(~scanf("%s",s+1)){
int n=strlen(s+1);
memset(dp,0x3f,sizeof(dp));
for(int i=1;i<=n;i++)dp[i][i]=1;
for(int k=1;k<n;k++){
for(int i=1;i<=n-k;i++){
if(s[i]==s[i+k]){
dp[i][i+k]=min(dp[i][i+k-1],dp[i+1][i+k]);
dp[i][i+k]=min(dp[i][i+k],dp[i+1][i+k-1]+1);
}else{
for(int j=i;j<i+k;j++){
dp[i][i+k]=min(dp[i][i+k],dp[i][j]+dp[j+1][i+k]);
}
}
}
}printf("%d\n",dp[1][n]);
}return 0;
}
BZOJ 1260 [CQOI2007]涂色paint(区间DP)的更多相关文章
- BZOJ 1260: [CQOI2007]涂色paint( 区间dp )
区间dp.. dp( l , r ) 表示让 [ l , r ] 这个区间都变成目标颜色的最少涂色次数. 考虑转移 : l == r 则 dp( l , r ) = 1 ( 显然 ) s[ l ] = ...
- [BZOJ 1260][CQOI2007]涂色paint 题解(区间DP)
[BZOJ 1260][CQOI2007]涂色paint Description 假设你有一条长度为5的木版,初始时没有涂过任何颜色.你希望把它的5个单位长度分别涂上红.绿.蓝.绿.红色,用一个长度为 ...
- 【DP】BZOJ 1260: [CQOI2007]涂色paint
1260: [CQOI2007]涂色paint Time Limit: 30 Sec Memory Limit: 64 MBSubmit: 893 Solved: 540[Submit][Stat ...
- [BZOJ1260][CQOI2007]涂色paint 区间dp
1260: [CQOI2007]涂色paint Time Limit: 30 Sec Memory Limit: 64 MB Submit: 1575 Solved: 955 [Submit][S ...
- BZOJ 1260: [CQOI2007]涂色paint【区间DP】
Description 假设你有一条长度为5的木版,初始时没有涂过任何颜色.你希望把它的5个单位长度分别涂上红.绿.蓝.绿.红色,用一个长度为5的字符串表示这个目标:RGBGR. 每次你可以把一段连续 ...
- 1260. [CQOI2007]涂色【区间DP】
Description 假设你有一条长度为5的木版,初始时没有涂过任何颜色.你希望把它的5个单位长度分别涂上红.绿.蓝.绿.红色,用一个长度为5的字符串表示这个目标:RGBGR. 每次你可以把一段连续 ...
- 【bzoj1260】[CQOI2007]涂色paint 区间dp
题目描述 给出一个序列,每次可以给一段染成同一种颜色,问最少要染多少次能够染成给定方案. 输入 输入仅一行,包含一个长度为n的字符串,即涂色目标.字符串中的每个字符都是一个大写字母,不同的字母代表不同 ...
- B1260 [CQOI2007]涂色paint 区间dp
这个题和我一开始想的区别不是很大,但是要我独自做出来还是有一些难度. 每一次涂色 只有这两种可能: 1) 把一段未被 覆盖过的区间 涂成 * 色 2) 把一段被一种颜色覆盖的区间涂成 * 色 (并且 ...
- CQOI2007 涂色 paint (区间dp)
听说这道题是当年省选题 于是兴致勃勃拿来做了做 至于如何想到思路... 事实上没想象中那么简单... 脑阔挺疼的... (一开始都没看出来是区间dp) 想到可以区间dp,然后就似乎没啥大问题 枚举区间 ...
随机推荐
- vue-cli proxyTable中跨域中pathRewrite 怎么用
问:proxyTable 里面的pathRewrite里面的‘^/iclient’:'' 什么意思? 答:用代理, 首先你得有一个标识, 告诉他你这个连接要用代理. 不然的话, 可能你的 html, ...
- python进行机器学习(三)之模型选择与构建
Scikit-Learn库已经实现了所有基本机器学习的算法,可以直接调用里面库进行模型构建. 一.逻辑回归 大多数情况下被用来解决分类问题(二元分类),但多类的分类(所谓的一对多方法)也适用.这个算法 ...
- 直接在注册DB服务的时候,做beforeQuery事件监听
- 安全测试===sqlmap(肆)转载
十八.杂项 1.使用简写 参数:-z 有些参数组合是被经常用到的,如“--batch --random-agent --ignore-proxy --technique=BEU”,这样写一大串很不好看 ...
- python基础===monkeytype可以自动添加注释的模块!
monkeytype 一个可以自动添加注释的模块! 先要下载: pip install monkeytype 以官网的sample code为例 #moudle.py def add(a, b): r ...
- 64_k2
kf5-libkdepim-akonadi-17.04.1-1.fc26.x86_64.rpm 25-May-2017 12:22 177198 kf5-libkdepim-devel-17.04.1 ...
- 自己动手一步步安装Linux系统
自己动手一步步安装Linux系统 http://502245466.blog.51cto.com/7559397/1291910/
- 深度解析Python动态语言
1.动态语言的定义 动态编程语言是高级程序设计语言的一个类别,在计算机科学领域已被广泛应用.它是一类在运行时可以改变其结构的语言:例如新的函数.对象.甚至代码可以被引进,已有的函数可以被删除或是其他结 ...
- RSA加密解密与加签验签
RSA公钥加密算法是1977年由罗纳德·李维斯特(Ron Rivest).阿迪·萨莫尔(Adi Shamir)和伦纳德·阿德曼(Leonard Adleman)一起提出的.1987年7月首次在美国公布 ...
- CMDB (后台管理) CURD 插件
查 a. 基本实现 <!DOCTYPE html> <html lang="en"> <head> <meta charset=" ...