题目大意

题目真的是不说人话......

有一个国家的国旗是由一个 N * M 的方格组成的。如果想要这面国旗合法,就必须满足要求:

  • 国旗从上到下必须是白色、蓝色和红色,顺序不能改变。
  • 每一种颜色都至少有一行。

小a这时候捡到了一块破布,希望你通过涂颜色的方式,把破布成合法的国旗,并且要求涂的地方最少,输出有几个要涂的地方。

话说这小a......

然后这国旗好像是俄罗斯的

思路

一开始我还在想dp,想不出来,一看数据范围......

连100都不到,dp啥啊......吐槽一句,这要不是kkk出的题,肯定是红的。还橙题唉

废话说完了。思路就是暴力。但是我们需要先做一下初始化。初始化什么呢?

大家想一想,我们是要统计最少的填涂次数。所以,我们把每一行不是 "W"、"B"、"R"的代价算出来,存到三个数组里。

好,现在有了这些东西,开始正式暴力了。

我们其实只需要枚举两条分割线,分割线就是两种不同颜色中间的那条线。这样,有了两条分割线,就可以算答案,然后取最小值就行了。

ok啊,看代码!

代码

#include <iostream>
#include <cstdio>
#include <algorithm>
#define MAXN 55
using namespace std; int n, m;
char s[MAXN][MAXN];
int cntW[MAXN], cntB[MAXN], cntR[MAXN];
int answer = 1e9; int main () {
cin >> n >> m; for (int i = 1; i <= n; ++i) {
int cnt1 = 0, cnt2 = 0, cnt3 = 0;
for (int j = 1; j <= m; ++j) {
cin >> s[i][j];
if (s[i][j] != 'W') cnt1 += 1;
if (s[i][j] != 'B') cnt2 += 1;
if (s[i][j] != 'R') cnt3 += 1;
cntW[i] = cnt1;
cntB[i] = cnt2;
cntR[i] = cnt3;
}
} int c = 0;
for (int i = 2; i <= n - 1; ++i) {
for (int j = i; j <= n - 1; ++j) {
for (int a = 1; a < i; ++a) {
c += cntW[a];
}
for (int a = i; a <= j; ++a) {
c += cntB[a];
}
for (int a = j + 1; a <= n; ++a) {
c += cntR[a];
}
answer = min (answer, c);
c = 0;
}
} cout << answer << endl;
return 0;
}

完结散花。

道路千万条,自己编码第一条。

复制棕名后,陶片放逐两行泪。

P3392 涂国旗 题解的更多相关文章

  1. 洛谷P3392 涂国旗

    P3392 涂国旗 107通过 507提交 题目提供者kkksc03 标签 难度普及- 提交  讨论  题解 最新讨论 直接读字符会wa WA?-- 为什么不对... 跪求找错 快点给钱 这不就是荷兰 ...

  2. 洛谷 P3392 涂国旗

    P3392 涂国旗 题目描述 某国法律规定,只要一个由N*M个小方块组成的旗帜符合如下规则,就是合法的国旗.(毛熊:阿嚏——) 从最上方若干行(>=1)的格子全部是白色的. 接下来若干行(> ...

  3. 洛谷⑨月月赛Round2 P3392涂国旗[DP]

    题目描述 某国法律规定,只要一个由N*M个小方块组成的旗帜符合如下规则,就是合法的国旗.(毛熊:阿嚏——) 从最上方若干行(>=1)的格子全部是白色的. 接下来若干行(>=1)的格子全部是 ...

  4. 洛谷 P1162 填涂颜色题解

    题目描述 由数字00组成的方阵中,有一任意形状闭合圈,闭合圈由数字11构成,围圈时只走上下左右44个方向.现要求把闭合圈内的所有空间都填写成22.例如:6 \times 66×6的方阵(n=6n=6) ...

  5. bzoj 1260涂色 题解

    题面 区间dp, 我学的也不怎么好. myj说动态规划就是搜索的无限剪枝. 所以是搜了网上的代码, 看了看. 思路就是枚举区间,f数组就是存储从i到j需要的最少次数, 当然一开始他们的值要先设置一个很 ...

  6. 【算法•日更•第三十期】区间动态规划:洛谷P4170 [CQOI2007]涂色题解

    废话不多说,直接上题:  P4170 [CQOI2007]涂色 题目描述 假设你有一条长度为5的木版,初始时没有涂过任何颜色.你希望把它的5个单位长度分别涂上红.绿.蓝.绿.红色,用一个长度为5的字符 ...

  7. P1162填涂颜色——题解

    题目描述 由数字0组成的方阵中,有一任意形状闭合圈,闭合圈由数字1构成,围圈时只走上下左右4个方向.现要求把闭合圈内的所有空间都填写成2.例如:6×6的方阵(n=6),涂色前和涂色后的方阵如下: 0 ...

  8. 洛谷P4170 [CQOI2007]涂色题解

    废话: 这个题我第一眼看就是贪心呐, 可能是我之前那做过一道类似的题这俩题都是关于染色的 现在由于我帅气无比的学长的指导, 我已经豁然开朗, 这题贪心不对啊, 当时感觉自己好厉害贪心都能想出来 差点就 ...

  9. BZOJ 4817数点涂色题解

    题目链接 考试考了一道类似的题目,然后不争气的挂掉了,于是跑过来学习这道题的解法... 我还是太菜了.... 我们可以发现任意时刻,原树中颜色相同的点的集合一定是一条链, 即上面这种状态,而这种结构是 ...

  10. 洛谷⑨月月赛Round2 官方比赛 OI

    自评: (完成时间3.5时) 第一题 模拟 虽然A了,代码敲得有点慢 第二题 最短路 第一次敲对了,又考虑数据范围和答案范围,改错了,100分改成42分.QAQ. 第三题 乱搞 80分 还可以(因为没 ...

随机推荐

  1. 一致性hash和普通hash和hash槽

    普通hash Hash函数:一般翻译做散列.杂凑,或音译为哈希,是把任意长度的输入(又叫做预映射pre-image)通过散列算法变换成固定长度的输出,该输出就是散列值.碰撞(冲突):如果两个关键字通过 ...

  2. 一文搞懂企业架构与DDD融合

    大家好,我是汤师爷~ 今天聊聊企业架构与DDD如何进行融合. 企业架构TOGAF 什么是企业架构TOGAF? TOGAF(The Open Group Architecture Framework)是 ...

  3. JDK8之前日期时间API

    /*java.util.Date类---java.sql.Date类1.两个构造器的使用 >构造器一:Date():创建一个对应当前时间的Date对象 >构造器二:创建指定毫秒数的Date ...

  4. Codeforces Round 957 (Div. 3)

    题目链接:Codeforces Round 957 (Div. 3) 总结:E不懂,F差一个set去重 A. Only Pluses fag:枚举 B. Angry Monk fag:模拟 Solut ...

  5. 从拼积木到最长连续序列:一道别出心裁的数组题目|LeetCode 128 最长连续序列

    LeetCode 128 最长连续序列 点此看全部题解 LeetCode必刷100题:一份来自面试官的算法地图(题解持续更新中) 生活中的算法 你小时候一定玩过数字积木吧?一堆写着不同数字的积木块散落 ...

  6. linux shell 脚本调试技巧

    本文分享自天翼云开发者社区<linux shell 脚本调试技巧>,作者:g****n 1.bash -x 加脚本 这是最常用的调试手段,终端会打印出,脚本执行过程中的每一个命令. a. ...

  7. Mac常用系统配置

    一.系统类 1.隐藏文件夹 打开控制台输入:chflags hidden [拖入需要隐藏的文件夹] 2.特定软件触控栏一直显示F1-F12 选择左上角苹果->系统设置->键盘-> 3 ...

  8. 本地AI搭建

    搭建本地博客AI 目录 搭建本地博客AI 环境 下载ollama 选择模型 选择embedding模型 查看性能测试 选择合适的嵌入模型(Embedder) 估算内存 选择模型 量化类型介绍 Q5_0 ...

  9. Java - JVM及其调优

    原文链接:https://blog.csdn.net/qq_27098537/article/details/124436788 一.什么是JVM 用于运行java代码,包括一套字节码指令集.一组寄存 ...

  10. 记录一段mysql代码

    SELECT f . * , tmp.userid, tmp.cishu FROM fx_user f, ( SELECT a.id, b.userid AS userid, COUNT( * ) A ...