BZOJ1260 [CQOI2007]涂色paint 动态规划
欢迎访问~原文出处——博客园-zhouzhendong
去博客园看该题解
题目传送门 - BZOJ1260
题意概括
假设你有一条长度为5的木版,初始时没有涂过任何颜色。你希望把它的5个单位长度分别涂上红、绿、蓝、绿、红色,用一个长度为5的字符串表示这个目标:RGBGR。 每次你可以把一段连续的木版涂成一个给定的颜色,后涂的颜色覆盖先涂的颜色。例如第一次把木版涂成RRRRR,第二次涂成RGGGR,第三次涂成RGBGR,达到目标。 用尽量少的涂色次数达到目标。
n<=50
题解
我们考虑区间型动归。
如果s[L] = s[R] ,那么显然有dp[L][R] = min(dp[L][R] , dp[L + 1][R] , dp[L][R - 1])。
如果s[L] = s[L + 1],那么有dp[L][R] = min(dp[L][R] , dp[L + 1][R]);
如果s[R] = s[R - 1],那么有dp[L][R] = min(dp[L][R] , dp[L][R - 1]);
剩余的情况,就是基础的区间合并:dp[L][R]=min(dp[L][R] , dp[L][k] +dp[k+1][R] | L <= k Λ k<R);
所以n3复杂度。
这题有30秒时限,貌似开大了。
记忆化dfs也可以做的。
初始所有的dp[i][i] = 1;
代码
#include <cstring>
#include <algorithm>
#include <cstdio>
#include <cstdlib>
#include <cmath>
using namespace std;
const int N=50+5;
int n,dp[N][N];
char s[N];
int main(){
scanf("%s",s+1);
n=strlen(s+1);
memset(dp,63,sizeof dp);
for (int i=1;i<=n;i++)
dp[i][i]=1;
for (int i=1;i<n;i++)
for (int j=1;j+i<=n;j++){
int L=j,R=j+i;
if (s[L]==s[R])
dp[L][R]=min(dp[L+1][R],dp[L][R-1]);
if (s[L]==s[L+1])
dp[L][R]=min(dp[L][R],dp[L+1][R]);
if (s[R]==s[R-1])
dp[L][R]=min(dp[L][R],dp[L][R-1]);
for (int k=L;k<R;k++)
dp[L][R]=min(dp[L][R],dp[L][k]+dp[k+1][R]);
}
printf("%d",dp[1][n]);
return 0;
}
BZOJ1260 [CQOI2007]涂色paint 动态规划的更多相关文章
- BZOJ1260 CQOI2007 涂色paint 【区间DP】
BZOJ1260 CQOI2007 涂色paint Description 假设你有一条长度为5的木版,初始时没有涂过任何颜色.你希望把它的5个单位长度分别涂上红.绿.蓝.绿.红色,用一个长度为5的字 ...
- bzoj千题计划185:bzoj1260: [CQOI2007]涂色paint
http://www.lydsy.com/JudgeOnline/problem.php?id=1260 区间DP模型 dp[l][r] 表示涂完区间[l,r]所需的最少次数 从小到大们枚举区间[l, ...
- [BZOJ1260][CQOI2007]涂色paint 区间dp
1260: [CQOI2007]涂色paint Time Limit: 30 Sec Memory Limit: 64 MB Submit: 1575 Solved: 955 [Submit][S ...
- 【题解】 bzoj1260: [CQOI2007]涂色paint (区间dp)
bzoj1260,懒得复制,戳我戳我 Solution: 这种题目我不会做qwq,太菜了 区间打牌(dp) 用f[l][r]表示从l到r最少需要染几次色. 状态转移方程: 1.\(f[l][r]=mi ...
- BZOJ 1260 CQOI2007 涂色paint 动态规划
题目大意:给定一块木板,上面每一个位置有一个颜色,问最少刷几次能达到这个颜色序列 动态规划,能够先去重处理(事实上不是必需),令f[i][j]代表将i開始的j个位置刷成对应颜色序列的最小次数.然后状态 ...
- bzoj1260[CQOI2007]涂色paint
思路:区间dp,用f[i][j]表示区间[i,j]的答案,然后转移即可. #include<iostream> #include<cstdio> #include<cst ...
- 2018.09.17 bzoj1260: [CQOI2007]涂色paint(区间dp)
传送门 区间dp简单题啊. 很显然用f[l][r]f[l][r]f[l][r]表示把区间[l,r][l,r][l,r]按要求染好的代价. 这样可以O(n)O(n)O(n)枚举断点转移了啊. 显然如果断 ...
- 「CQOI2007」「BZOJ1260」涂色paint (区间dp
1260: [CQOI2007]涂色paint Time Limit: 30 Sec Memory Limit: 64 MBSubmit: 2057 Solved: 1267[Submit][St ...
- 【BZOJ-1260】涂色paint 区间DP
1260: [CQOI2007]涂色paint Time Limit: 30 Sec Memory Limit: 64 MBSubmit: 1147 Solved: 698[Submit][Sta ...
随机推荐
- StiReport简单使用
try { StiReport stiReport1 = new StiReport(); DataSet FDataSet = new DataSet(); DataTable table = ne ...
- pandas 读csv文件 TypeError: Empty 'DataFrame': no numeric data to plot
简单的代码,利用pandas模块读csv数据文件,这里有两种方式,一种是被新版本pandas遗弃的Series.from_csv:另一种就是pandas.read_csv 先说一下问题这个问题就是在读 ...
- tomcat顺序图摘要
1.Connector 处理一次请求顺序图 2.Context 和 wrapper 的处理请求时序图 3. 参考: https://www.ibm.com/developerworks/cn/java ...
- C# List分页
假设你每页10条数据当前是第3页 跳到第4页则:List.Skip((4-1)*10).Take(10) 本文来自SunShine,转载请标明出处: http://do.jhost.cn/sunshi ...
- CentOS7_JDK安装和环境变量配置
1.下载 curl -O http://download.Oracle.com/otn-pub/java/jdk/7u79-b15/jdk-7u79-linux-x64.tar.gz 2.改名 mv ...
- GCC的符号可见性——解决多个库同名符号冲突问题
引用自:https://github.com/wwbmmm/blog/wiki/gcc_visibility 问题 最近项目遇到一些问题,场景如下 主程序依赖了两个库libA的funcA函数和libB ...
- springboot系列四、配置模板引擎、配置热部署
一.配置模板引擎 在之前所见到的信息显示发现都是以 Rest 风格进行显示,但是很明显在实际的开发之中,所有数据的显示最终都应该交由页面完成,但是这个页面并不是*.jsp 页面,而是普通的*.html ...
- WPF通过DynamicResource的用法
1.先在资源类库中编写:style.xaml,如下: <ResourceDictionary xmlns="http://schemas.microsoft.com/winfx/2 ...
- NTFS文件系统简介
原文地址:http://www.cnblogs.com/watertao/archive/2011/11/28/2266595.html 1.简介 NTFS(New Technology File S ...
- mysql安装与卸载(绿色版)
1.下载压缩包,解压 2.配置环境变量 PATH:%MYSQL_HOME%\bin 3.在安装目录下新建my.ini配置文件: [mysql] default-character-set=utf8 [ ...