传送门

区间dp简单题啊。

很显然用f[l][r]f[l][r]f[l][r]表示把区间[l,r][l,r][l,r]按要求染好的代价。

这样可以O(n)O(n)O(n)枚举断点转移了啊。

显然如果断开的两个点颜色相同可以省掉一次。

但是注意如果[l,r][l,r][l,r]两端点相同同样可以省掉一部分代价(细节见代码)。

代码:

#include<bits/stdc++.h>
#define N 55
using namespace std;
int n,col[N],f[N][N];
char s[N];
inline int calc(char x){return x-'A'+1;}
inline int dfs(int l,int r){
	if(~f[l][r])return f[l][r];
	if(l==r)return f[l][r]=1;
	f[l][r]=0x3f3f3f3f;
	if(col[l]==col[r])f[l][r]=min(min(dfs(l+1,r),dfs(l,r-1)),dfs(l+1,r-1)+1);
	for(int i=l;i<r;++i)
		if(col[i]==col[i+1])f[l][r]=min(f[l][r],dfs(l,i)+dfs(i+1,r)-1);
		else f[l][r]=min(f[l][r],dfs(l,i)+dfs(i+1,r));
	return f[l][r];
}
int main(){
	memset(f,-1,sizeof(f)),scanf("%s",s+1),n=strlen(s+1);
	for(int i=1;i<=n;++i)col[i]=calc(s[i]);
	printf("%d",dfs(1,n));
	return 0;
}

2018.09.17 bzoj1260: [CQOI2007]涂色paint(区间dp)的更多相关文章

  1. [BZOJ1260][CQOI2007]涂色paint 区间dp

    1260: [CQOI2007]涂色paint Time Limit: 30 Sec  Memory Limit: 64 MB Submit: 1575  Solved: 955 [Submit][S ...

  2. 【BZOJ-1260】涂色paint 区间DP

    1260: [CQOI2007]涂色paint Time Limit: 30 Sec  Memory Limit: 64 MBSubmit: 1147  Solved: 698[Submit][Sta ...

  3. BZOJ 1260: [CQOI2007]涂色paint( 区间dp )

    区间dp.. dp( l , r ) 表示让 [ l , r ] 这个区间都变成目标颜色的最少涂色次数. 考虑转移 : l == r 则 dp( l , r ) = 1 ( 显然 ) s[ l ] = ...

  4. 【bzoj1260】[CQOI2007]涂色paint 区间dp

    题目描述 给出一个序列,每次可以给一段染成同一种颜色,问最少要染多少次能够染成给定方案. 输入 输入仅一行,包含一个长度为n的字符串,即涂色目标.字符串中的每个字符都是一个大写字母,不同的字母代表不同 ...

  5. B1260 [CQOI2007]涂色paint 区间dp

    这个题和我一开始想的区别不是很大,但是要我独自做出来还是有一些难度. 每一次涂色 只有这两种可能: 1) 把一段未被 覆盖过的区间 涂成 * 色 2) 把一段被一种颜色覆盖的区间涂成 * 色 (并且 ...

  6. CQOI2007 涂色 paint (区间dp)

    听说这道题是当年省选题 于是兴致勃勃拿来做了做 至于如何想到思路... 事实上没想象中那么简单... 脑阔挺疼的... (一开始都没看出来是区间dp) 想到可以区间dp,然后就似乎没啥大问题 枚举区间 ...

  7. BZOJ1260 CQOI2007 涂色paint 【区间DP】

    BZOJ1260 CQOI2007 涂色paint Description 假设你有一条长度为5的木版,初始时没有涂过任何颜色.你希望把它的5个单位长度分别涂上红.绿.蓝.绿.红色,用一个长度为5的字 ...

  8. bzoj千题计划185:bzoj1260: [CQOI2007]涂色paint

    http://www.lydsy.com/JudgeOnline/problem.php?id=1260 区间DP模型 dp[l][r] 表示涂完区间[l,r]所需的最少次数 从小到大们枚举区间[l, ...

  9. BZOJ1260 [CQOI2007]涂色paint 动态规划

    欢迎访问~原文出处——博客园-zhouzhendong 去博客园看该题解 题目传送门 - BZOJ1260 题意概括 假设你有一条长度为5的木版,初始时没有涂过任何颜色.你希望把它的5个单位长度分别涂 ...

随机推荐

  1. MYSQL三大范式

    第一范式:确保每列的原子性. 第一范式是最基本的范式. 数据库表中的字段都是单一属性的,不可再分. 只要是关系数据库都满足第一范式 如果每列(或者每个属性)都是不可再分的最小数据单元(也称为最小的原子 ...

  2. as3 文档类判断是否被加载

    if (!stage) { trace(("被加载->this.parent:" + this.parent)); }else { trace(("单独打开-> ...

  3. c++实现一个比较两个string类型的版本号的小demo

    在软件实现更新模块的时候,有可能会判断一下服务器上的版本的版本号和本地版本的版本号. 下面有类似这样形式的版本号:string str = "0.0.0.1"; 分析一下可以看出, ...

  4. python之类的相关知识

    面向对象技术简介 类: 用来描述具有相同的属性和方法的对象的集合.它定义了该集合中每个对象所共有的属性和方法.对象是类的实例. 类变量:类变量在整个实例化的对象中是公用的.类变量定义在类中且在函数体之 ...

  5. iOS toll-free bridge

    https://developer.apple.com/library/ios/documentation/CoreFoundation/Conceptual/CFDesignConcepts/Art ...

  6. leader 选举机制

    from: http://www.jasongj.com/2015/01/02/Kafka%E6%B7%B1%E5%BA%A6%E8%A7%A3%E6%9E%90/ 一种非常常用的选举leader的方 ...

  7. java.lang.ClassNotFoundException: org.springframework.web.context.ContextLoaderL

    今天学习spring+cxf的时候遇到一个问题:在web.xml中配置了spring的上下文监听器: <listener> <listener-class>org.spring ...

  8. Spring 集成Hibernate的三种方式

    首先把hibernate的配置文件hibernate.cfg.xml放入spring的src目录下,并且为了便于测试导入了一个实体类Student.java以及它的Student.hbm.xml文件 ...

  9. scala 建模

    // train multinomial logistic regression val lr = new LogisticRegressionWithLBFGS() .setIntercept(tr ...

  10. referer null

    Referer表示超链接源的URL!你想看到实验效果,要从a-->(能过<a href="b.jsp")b页面,然后在B里可以取得Refere参数! String ur ...