1260: [CQOI2007]涂色paint

Time Limit: 30 Sec  Memory Limit: 64 MB
Submit: 893  Solved: 540
[Submit][Status][Discuss]

Description

假设你有一条长度为5的木版,初始时没有涂过任何颜色。你希望把它的5个单位长度分别涂上红、绿、蓝、绿、红色,用一个长度为5的字符串表示这个目标:RGBGR。 每次你可以把一段连续的木版涂成一个给定的颜色,后涂的颜色覆盖先涂的颜色。例如第一次把木版涂成RRRRR,第二次涂成RGGGR,第三次涂成RGBGR,达到目标。 用尽量少的涂色次数达到目标。

Input

输入仅一行,包含一个长度为n的字符串,即涂色目标。字符串中的每个字符都是一个大写字母,不同的字母代表不同颜色,相同的字母代表相同颜色。

Output

仅一行,包含一个数,即最少的涂色次数。

Sample Input

 

Sample Output

【样例输入1】
AAAAA

【样例输入1】
RGBGR

【样例输出1】
1

【样例输出1】
3

HINT

40%的数据满足:1<=n<=10
100%的数据满足:1<=n<=50

 

  很容易发现是区间DP但不知道怎么DP
  无奈看题解。。
  今天A了很多题但貌似只有一题是自己想的。。
  如果a[i]==a[j],那么最优方案为min (选i-(j-1)区间,或(i+1)-j区间,选(i+1)-(j-1)区间)。
  否则枚举k f[i][j]=min(f[i][k]+f[k+1][j]).
  

 #include<cstdio>
#include<cstring>
#include<algorithm>
#include<cmath> #define maxn 52 using namespace std; char s[maxn]; int f[maxn][maxn],inf=; int main()
{
scanf("%s",s);
memset(f,/,sizeof(f));
int n=strlen(s);
for(int i=;i<=n;i++)
f[i][i]=;
for(int i=n-;i>=;i--)
for(int j=i+;j<=n;j++)
if(s[i-]==s[j-])
f[i][j]=min(f[i+][j-]+,min(f[i][j-],f[i+][j]));
else
for(int k=i;k<j;k++)
f[i][j]=min(f[i][j],f[i][k]+f[k+][j]);
printf("%d",f[][n]);
return ;
}

【DP】BZOJ 1260: [CQOI2007]涂色paint的更多相关文章

  1. [BZOJ 1260][CQOI2007]涂色paint 题解(区间DP)

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

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

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

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

    [题目链接] http://www.lydsy.com/JudgeOnline/problem.php?id=1260 [题目大意] 假设你有一条长度为n的木版,初始时没有涂过任何颜色 每次你可以把一 ...

  4. BZOJ 1260: [CQOI2007]涂色paint【区间DP】

    Description 假设你有一条长度为5的木版,初始时没有涂过任何颜色.你希望把它的5个单位长度分别涂上红.绿.蓝.绿.红色,用一个长度为5的字符串表示这个目标:RGBGR. 每次你可以把一段连续 ...

  5. BZOJ 1260 CQOI2007 涂色paint 动态规划

    题目大意:给定一块木板,上面每一个位置有一个颜色,问最少刷几次能达到这个颜色序列 动态规划,能够先去重处理(事实上不是必需),令f[i][j]代表将i開始的j个位置刷成对应颜色序列的最小次数.然后状态 ...

  6. 1260: [CQOI2007]涂色paint

    Description 假设你有一条长度为5的木版,初始时没有涂过任何颜色.你希望把它的5个单位长度分别涂上红.绿.蓝.绿.红色,用一个长度为5的字符串表示这个目标:RGBGR. 每次你可以把一段连续 ...

  7. 【BZOJ】1260 [CQOI2007]涂色paint(区间dp)

    题目 传送门:QWQ 分析 区间dp, 详见代码 代码 /************************************************************** Problem: ...

  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 区间dp

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

随机推荐

  1. Session State Pattern会话状态模式

    Client Session State 客户会话状态. 在Client端保存会话状态. 运行机制 Client在每次请求时会把所有的会话数据传给Server,Server在响应时把所有的会话状态传给 ...

  2. 安装MySQL软件

    安装MySQL软件(绿色版) ① 解压软件包 ② 更改文件夹名称为mysql并复制到/usr/local文件夹下 ③ 使用cd指令进入/usr/local/mysql文件夹,使用ls –l查看 查看后 ...

  3. js获取url及url参数的方法

    <script language="JavaScript" type="text/javascript"> function GetUrlParms ...

  4. 用CSS实现Firefox 和IE 都支持的Alpha透明效果

    有的时候,为了实现一些特殊效果,需要将页面元素变透明,本文介绍的就是用 CSS 实现 Firefox 和 IE 都支持的 Alpha 透明效果.CSS: filter:alpha(opacity=50 ...

  5. Linux下iftop网卡流量监控使用

    在类linux系统中可以使用top查看系统资源.进程.内存占用等信息.查看网络状态可以使用netstat.nmap等工具.若要查看实时的网络流量,监控TCP/IP连接等,则可以使用iftop. 一.i ...

  6. 重写DataGridViewColumn

    做个项目需要用到DataGridView,这个控件还是挺好用的,但是今天却发现无法实现自己想要的功能.主要是DataGridViewCheckBoxColumn这个列虽然是提供了复选框,但是却未能在复 ...

  7. jquery弹出关闭遮罩层实例

    jquery弹出关闭遮罩层实例. 代码如下: <!doctype html public "-//w3c//dtd xhtml 1.0 transitional//en" & ...

  8. http 错误编号大全(转)

      状态行包含HTTP版本.状态代码.与状态代码对应的简短说明信息.在大多数情况下,除了Content-Type之外的所有应答头都是可选的.但Content-Type是必需的,它描述的是后面文档的MI ...

  9. Seafile V4.1 安装笔记

    yum -y install gcc gcc-c++ make cmake pcre pcre-devel expat expat-devel curl wget mlocate gd gd-deve ...

  10. 获得当前时间的PRO

    1.没有参数的存储过程 create or replace procedure get_timeas    cur_time varchar2(10);begin  select to_char(sy ...