小小粉刷匠

题目描述

“lalala,我是一个快乐的粉刷匠”,小名一边快活地唱着歌,一边开心地刷着墙",兴致突然被打断,“小名,你今天如果刷不完这一栋楼的墙,那么你就等着被炒鱿鱼吧”,老板声嘶力竭的吼着。苦恼的小名因为不想被炒鱿鱼,所以希望尽量快地刷完墙,由于他本人的数学基础很差,他现在请你来帮助他计算最少完成每一堵墙需要刷多少次。每一面墙有n个段,对于每个段指定一个目标颜色ci。刚开始的时候所有的墙壁为白色,我们现在有一个刷子,刷子长度为k,刷子每次可以选择一种颜色,然后选择段数为(1~k)连续的墙段刷成选择的一种颜色。我们现在想要知道,为了把墙变成目标颜色,最少刷多少次(保证指定的目标颜色一定不为白色)。

输入描述:

对于每一个案例,我们第一行包括两个整数n,k(1<=n<=100,1<=k<=50,k<n),表示墙的长度为n,刷子的长度为k。第二行输入n个整数(c1c2…cn),(1<=ci<=256),表示对于墙的每一段指定的颜色。

输出描述:

输出一个数,表示小名最少刷多少次。

示例1

输入
3 3
1 2 1
输出
2

示例2

输入
5 4
5 4 3 3 4
输出
3

#include <cstdio>
#include <cstring>
#include <algorithm>
#include <iostream>
#include <map>using namespace std;
//指定颜色
int c[200], dp[200][200];int main() {//墙,刷子int n, kk;scanf("%d%d", &n, &kk);for (int i = 1; i <= n; i++) {scanf("%d", &c[i]);dp[i][i] = 1;}for (int len = 2; len <= n; len++) {for (int i = 1; i + len <= n + 1; i++) {int j = i + len - 1;dp[i][j] = dp[i + 1][j] + 1;if (len <= kk) {for (int k = i + 1; k <= j; k++) {if (c[i] == c[k]) {dp[i][j] = min(dp[i][j], dp[i + 1][k] + dp[k + 1][j]);}}} else {for (int k = i; k <= j; k++) {dp[i][j] = min(dp[i][j], dp[i][k] + dp[k + 1][j]);}}}}printf("%d\n", dp[1][n]);return 0;
}

小小粉刷匠(区间 dp)相关推荐

  1. bzoj1296 [SCOI2009]粉刷匠 区间dp+背包

    每一条都是独立的,所以可以分开处理 对于一条,粉刷一定是粉刷完完整的一条是最优的(不会有比它优的),所以枚举次数起点转移 不同条之间就是分组背包的关系了.. 码: #include<iostre ...

  2. 小小粉刷匠 牛客(区间dp)

    链接:https://ac.nowcoder.com/acm/problem/16129 来源:牛客网 题目描述 "lalala,我是一个快乐的粉刷匠",小名一边快活地唱着歌,一边 ...

  3. 刷题记录:牛客NC16129小小粉刷匠

    传送门:牛客 题目描述: "lalala,我是一个快乐的粉刷匠",小名一边快活地唱着歌,一边开心地刷着墙",兴致突然被打断,"小名,你今天如果刷不 完这一栋楼的 ...

  4. 【题解】P4158 [SCOI2009]粉刷匠(DP,背包)

    [题解]P4158 [SCOI2009]粉刷匠 是一道资源规划 DP 的好题,但是我想了很久还去看了题解./kk我真菜. 题目链接 P4158 [SCOI2009]粉刷匠 - 洛谷 题意概述 发现自己 ...

  5. bzoj 1296: [SCOI2009]粉刷匠(DP+DP)

    1296: [SCOI2009]粉刷匠 Time Limit: 10 Sec  Memory Limit: 162 MB Submit: 2339  Solved: 1348 [Submit][Sta ...

  6. P4158-[SCOI2009]粉刷匠【dp,背包】

    正题 https://www.luogu.com.cn/problem/P4158 题目大意 nnn个墙长度为mmm,每次可以粉刷一堵墙的连续一段区间,粉刷过的不能再粉刷.给出每个位置应该粉刷的颜色, ...

  7. [洛谷]P4158 [SCOI2009]粉刷匠 (#线性dp+背包dp)

    题目描述 windy有 N 条木板需要被粉刷. 每条木板被分为 M 个格子. 每个格子要被刷成红色或蓝色. windy每次粉刷,只能选择一条木板上一段连续的格子,然后涂上一种颜色. 每个格子最多只能被 ...

  8. BZOJ1296(SCOI2009)[粉刷匠]--背包+DP

    [链接] bzoj1296 [解题报告] 很容易想到背包定义g[i][j]g[i][j]表示目前推了ii行,共刷了jj次. 然后我们再对每一行进行考虑. 定义f[i][j]f[i][j]表示目前推到第 ...

  9. 【题解】洛谷P4158 [SCOI2009] 粉刷匠(DP)

    次元传送门:洛谷P4158 思路 f[i][j][k][0/1]表示在坐标为(i,j)的格子 已经涂了k次 (0是此格子涂错 1是此格子涂对)涂对的格子数 显然的是 每次换行都要增加一次次数 那么当j ...

最新文章

  1. 2022-2028中国曝光机市场现状及未来发展趋势
  2. 快过年了,博客园里的文章也变少了
  3. Intel 64/x86_64/IA-32/x86处理器 - 通用指令(4) - 比特位设置指令/字节设置指令
  4. QMessagebox简单使用
  5. python50种算法_一文洞悉Python必备50种算法
  6. app icon在线生成
  7. 记一次springboot应用偶发502错误的排查过程
  8. Nicholas C. Zakas谈怎样才能成为优秀的前端工程师
  9. 常用的ODI映射与过滤命令
  10. 香港马市、田忌赛马?这款游戏 IP 碉堡了
  11. 微信小程序注册提示邮箱已被占用
  12. 怎么用python电商文本挖掘?(5)
  13. SDL入门教程(七):SDL抠色(Color Keying)
  14. matlab中filtfilt函数解析
  15. 八七、Node.js事件循环与多进程
  16. 2019 siggraph_观看SIGGRAPH 2019的Unity图形会议
  17. AndroidStudio写的个人信息修改界面
  18. xp如何添加桌面计算机回收站,xp系统桌面回收站不见了怎么办
  19. Ubuntu16.04安装Matlab2015a_hudingyin_新浪博客
  20. 泛泰SKYA850黑砖QHSUSB_DLOAD救砖教程(操作篇)[2013.6.3更新]

热门文章

  1. 一文读懂MACD技术指标
  2. 必应输入法VS搜狗拼音
  3. 职业经理人管理素养提升课程
  4. vue3 引入天地图
  5. matlab计算图片基频,复倒频谱 - 基频估计
  6. 小实践之网络打印机的设置(实际操作篇)
  7. 细说影响淘宝排名的那些因素
  8. 加入立人图书馆的十本必读书
  9. 论文投稿变量书写格式汇总
  10. DVWA 不跳转_利用url跳转漏洞冒充公安局官网的骚操作