洛谷P4170 [CQOI2007]涂色题解
废话:
这个题我第一眼看就是贪心呐, 可能是我之前那做过一道类似的题这俩题都是关于染色的
现在由于我帅气无比的学长的指导, 我已经豁然开朗, 这题贪心不对啊,
当时感觉自己好厉害贪心都能想出来
差点就觉得自己感动中国了
现在感觉自己仿佛是个zz
但是50分的话, 还是比较可观的(我在瞎说不要信
正文:
区间DP, 枚举区间 ,分为两个情况讨论
第一种情况:你现在枚举的这个区间[i, j], 两边的颜色是一样的那么就从[i + 1. j]和[i, j - 1]里面选择较小的那一个

第二种情况:就是两边颜色不一样的情况, 直接枚举一个k合并区间即可
最后一定要注意:
f数组一定要初始化!
memset (f, 0x3f3f3f, sizeof (f));
for (int i = ; i <= len; i++)
f[i][i] = ;
AC程序(我真的很喜欢自己的码风,等待挨喷):
#include <cstdio>
#include <cstring>
#include <iostream>
using namespace std;
const int N = ;
char ch[N];
int f[N][N], len;
int main () {
scanf ("%s", ch + );
len = strlen (ch + );
memset (f, 0x3f3f3f, sizeof (f));
for (int i = ; i <= len; i++)
f[i][i] = ;
for (int l = ; l <= len; l++)
for (int i = ; i + l - <= len ; i++) {
int j = i + l - ;
if (ch[i] == ch[j])
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\n", f[][len]);
return ;
}
谢谢收看, 祝身体健康!
洛谷P4170 [CQOI2007]涂色题解的更多相关文章
- 【算法•日更•第三十期】区间动态规划:洛谷P4170 [CQOI2007]涂色题解
废话不多说,直接上题: P4170 [CQOI2007]涂色 题目描述 假设你有一条长度为5的木版,初始时没有涂过任何颜色.你希望把它的5个单位长度分别涂上红.绿.蓝.绿.红色,用一个长度为5的字符 ...
- 洛谷 P4170 [CQOI2007]涂色
题目描述 假设你有一条长度为5的木版,初始时没有涂过任何颜色.你希望把它的5个单位长度分别涂上红.绿.蓝.绿.红色,用一个长度为5的字符串表示这个目标:RGBGR. 每次你可以把一段连续的木版涂成一个 ...
- 洛谷P4170 [CQOI2007]涂色(区间dp)
题意 题目链接 Sol 震惊,某知名竞赛网站竟照搬省选原题! 裸的区间dp,\(f[l][r]\)表示干掉\([l, r]\)的最小花费,昨天写的时候比较困于是就把能想到的转移都写了.. // luo ...
- 【题解】洛谷P1283 平板涂色(搜索+暴力)
思路 看到n<16 整个坐标<100 肯定想到暴力啊 蒟蒻来一发最简单易懂的题解(因为不会DP哈 首先我们用map数组来存坐标图 注意前面的坐标需要加1 因为输入的是坐标 而我们需要的是格 ...
- 洛谷 P1162 填涂颜色题解
题目描述 由数字00组成的方阵中,有一任意形状闭合圈,闭合圈由数字11构成,围圈时只走上下左右44个方向.现要求把闭合圈内的所有空间都填写成22.例如:6 \times 66×6的方阵(n=6n=6) ...
- luogu P4170 [CQOI2007]涂色
题目描述 假设你有一条长度为5的木版,初始时没有涂过任何颜色.你希望把它的5个单位长度分别涂上红.绿.蓝.绿.红色,用一个长度为5的字符串表示这个目标:RGBGR. 每次你可以把一段连续的木版涂成一个 ...
- 洛谷P1283 平板涂色 &&一本通1445:平板涂色
题目描述 CE数码公司开发了一种名为自动涂色机(APM)的产品.它能用预定的颜色给一块由不同尺寸且互不覆盖的矩形构成的平板涂色. 为了涂色,APM需要使用一组刷子.每个刷子涂一种不同的颜色C.APM拿 ...
- 再一道区间DP -- P4170 [CQOI2007]涂色
https://www.luogu.org/problemnew/show/P4170 一道简单的区间DP,注意读入 #include <bits/stdc++.h> #define up ...
- P4170 [CQOI2007]涂色
传送门 区间dp,设\(f[l][r]\)表示区间\((l,r)\)的最小次数,当\(l==r\)时为\(1\),当\(s[l]==s[r]\)时为\(min(f[l][r-1],f[l+1][r]) ...
随机推荐
- 一段代码看 Java 引用类型
Java 中的操作数(不知道叫什么,相对于 bytecode 而言,类似 CPU 的操作码和操作数)分为值类型和引用类型: 值类型就是直接存储最终数值的,如 char, int, float, dou ...
- selenium中元素操作之上传操作(六)
上传操作分为两种情况: 1.input标签上传 如果是input可以直接输入路径的,那么直接调用send_keys输入路径,和前边的元素操作类似,在这里不再过多的赘述. 2.非input标签上传 非i ...
- gitblit服务器:用户、团队、权限管理
在日常开发工作中,我们通常使用版本控制软件管理团队的源代码,常用的SVN.Git.与SVN相比,Git有分支的概念,可以从主分支创建开发分支,在开发分支测试没有问题之后,再合并到主分支上去,从而避免了 ...
- Springboot揭秘-快速构建微服务体系-王福强-2016年5月第一次印刷
JavaConfig项目: spring IOC有一个非常核心的概念——Bean.由Spring容器来负责对Bean的实例化,装配和管理.XML是用来描述Bean最为流行的配置方式.Spring可以从 ...
- Django:RestFramework之-------解析器
7.解析器 依靠Content-Type对用户的请求体中的数据进行解析. 7.1django中的解析器 前戏:django中的request.POST/request.body request.POS ...
- 服务网格Istio初探
1. 服务网格Istio初探 1.1. 什么是Istio 它是一个完全开源的服务网格.什么是服务网格? 这个术语通常用于描述构成这些应用程序的微服务网络以及应用之间的交互.随着规模和复杂性的增长,服务 ...
- Cheat Engine 创建线程
打开游戏 扫描出阳光地址 打开自动汇编 激活测试 每次激活,阳光都会自增
- getsockopt套接口选项
1. getsockopt int getsockopt(int sockfd, int level, int optname, void *optval, socklen_t *optlen); i ...
- git commit 之后,撤销commit操作
撤销.修改commit 写代码过程中,如果已经git add [files] git -m commit [files],没有push代码到远程仓库,想撤销commit,可以根据实际情况,使用以下参数 ...
- 【MySql】Update批量更新与批量更新多条记录的不同值实现方法
mysql更新语句很简单,更新一条数据的某个字段,一般这样写: UPDATE mytable SET myfield = 'value' WHERE other_field = 'other_valu ...