洛谷P3392 涂国旗-----暴力美学的演绎

# 涂国旗

## 题目描述

某国法律规定,只要一个由 $N \times M$ 个小方块组成的旗帜符合如下规则,就是合法的国旗。(毛熊:阿嚏——)

- 从最上方若干行(至少一行)的格子全部是白色的;
- 接下来若干行(至少一行)的格子全部是蓝色的;
- 剩下的行(至少一行)全部是红色的;

现有一个棋盘状的布,分成了 $N$ 行 $M$ 列的格子,每个格子是白色蓝色红色之一,小 a 希望把这个布改成该国国旗,方法是在一些格子上涂颜料,盖住之前的颜色。

小a很懒,希望涂最少的格子,使这块布成为一个合法的国旗。

## 输入格式

第一行是两个整数 $N,M$。

接下来 $N$ 行是一个矩阵,矩阵的每一个小方块是`W`(白),`B`(蓝),`R`(红)中的一个。

## 输出格式

一个整数,表示至少需要涂多少块。

## 样例 #1

### 样例输入 #1

```
4 5
WRWRW
BWRWB
WRWRW
RWBWR
```

### 样例输出 #1

```
11
```

## 提示

### 样例解释

目标状态是:

```plain
WWWWW
BBBBB
RRRRR
RRRRR
```
一共需要改 $11$ 个格子。

### 数据范围

对于 $100\%$ 的数据,$N,M \leq 50$。

    当各位看到这题时,会怎么思考呢?首先我觉得很多人会考虑有没有规律?所以我们经过规律的寻找,发现没有规律,也没有什么简便方法。所以这时候我们就要考虑运用暴力美学了!

·首先,我们肯定使用字符串数组来记载字母,那如何统计数量呢?当然是用整型数组记录,我们用三个整型数组记录更方便(毕竟只有三种颜色,也可以用二维数组); 

接着我们用循环来记录各种方案的颜色改变次数,这可以用需要改变的颜色数组相加得到;

最后我们比较一下,得出最少得次数,并输出最终结果。(也可以在每次记录时,进行比较,这样更为简单。)

最后呈上代码

#include<stdio.h>
int main() {int n, m, arr[550] = { 0 }, brr[550] = { 0 }, crr[550] = { 0 }, a = 0,ret=0,sum,b,c,max=0;char ac[100];scanf("%d%d", &n, &m);for (int i = 0;i < n;i++) {scanf("%s", ac, 100);for (int j = 0;j < m;j++) {if (ac[j] == 'W') {arr[a] += 1;}else if (ac[j] == 'B') {brr[a] += 1;}else {crr[a] += 1;}}a++;}while(ret<n-2) {sum = 0;for (int i = 0;i <=ret;i++) {sum+=brr[i] + crr[i];}b = 0;for (int j = ret + 1;j <= n - 2;j++) {b+= crr[j] + arr[j];c=0;for (int v = j+1;v < n;v++) {c+= arr[v] + brr[v];}a=sum+b+c;if (a<max&&max!= 0){max = a;}else if (max == 0) {max = a;}a=0;}ret++;}printf("%d", max);return 0;
}

暴力美学,你爱了吗?

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/642528.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【论文阅读】Automated Runtime-Aware Scheduling for Multi-Tenant DNN Inference on GPU

该论文发布在 ICCAD’21 会议。该会议是EDA领域的顶级会议。 基本信息 AuthorHardwareProblemPerspectiveAlgorithm/StrategyImprovment/AchievementFuxun YuGPUResource under-utilization ContentionSW SchedulingOperator-level schedulingML-based scheduling auto-searc…

CGAL 网格连通聚类

文章目录 一、简介二、实现代码三、实现效果参考资料一、简介 这里的思路其实与点云的欧式聚类非常类似,区别在于点云的欧式聚类是通过搜索半径对点云进行聚类,至于基于连通性网格面片聚类则是通过面片的邻近关系对面片进行聚类,大致的过程与欧式聚类是相同的: 首先,需要指…

Rustdesk 中VP8 / VP9 / AV1 是什么?

环境&#xff1a; Rustdesk1.1.9 VP8 / VP9 / AV1 问题描述&#xff1a; VP8 / VP9 / AV1 是什么&#xff1f; 解决方案&#xff1a; 1.VP8、VP9和AV1是视频编解码器&#xff0c;用于压缩和解压缩视频数据。它们是由Google和Alliance for Open Media&#xff08;AOM&#…

011 变量

变量的定义 注意事项 作用域 类变量&#xff1a;定义在类中的变量&#xff0c;类的整个生命周期内可用实例变量&#xff1a;定义在类中的变量&#xff0c;类的实例可以使用局部变量&#xff1a;定义在方法中的变量&#xff0c;仅在方法内可以使用 class Dog{// 类变量static …

Oracle 19c RAC集群管理 ---------关键参数以及常用命令

Oracle 19c RAC集群管理 ---------关键参数 Oracle 19C RAC 参数最佳实践 --开启强制归档 ALTER DATABASE FORCE LOGGING; --设置 30分钟 强制归档 ALTER SYSTEM SET ARCHIVE_LAG_TARGET1800 SCOPEBOTH SID*; --设置期望undo保持时间3h ALTER SYSTEM SET UNDO_RETENTION21600…

系统学习Python——警告信息的控制模块warnings:常用函数-[warnings.simplefilter]

分类目录&#xff1a;《系统学习Python》总目录 函数 warnings.simplefilter(action, categoryWarning, lineno0, appendFalse)在警告过滤器种类列表中插入一条简单数据项。函数参数的含义与filterwarnings()相同&#xff0c;但不需要正则表达式&#xff0c;因为插入的过滤器总…

机器学习 | 深入理解并掌握核心概念

在如今数字化时代的浪潮下&#xff0c;机器学习已经成为人工智能领域的璀璨明星。它像一面魔镜&#xff0c;赋予计算机系统学习和改进的能力&#xff0c;让机器能够从海量数据中提取规律、预测未来&#xff0c;甚至做出智能决策。本 专栏 将带您踏上机器学习的奇妙之旅&#xf…

题解:CF1920E. Counting Binary Strings

题解&#xff1a;CF1920E. Counting Binary Strings 题意简述 题目链接&#xff1a;Problem - E - Codeforces。 洛谷翻译&#xff1a;Counting Binary Strings - 洛谷。 思路解析 假设我们有一个01串str&#xff08;设里面有z个“1”&#xff09;&#xff0c;我们要求它里…

Ubuntu (Linux) 下创建软链接(即符号链接,相当于windows下的快捷方式)方法

Ubuntu (Linux) 下创建软链接&#xff08;即符号链接&#xff0c;相当于windows下的快捷方式&#xff09;方法 使用创建软链接的命令 #命令格式如下。注意&#xff1a;请使用绝对路径&#xff0c;否则链接可能失效 ln -s <源文件或目录的绝对路径> <符号链接文件&am…

ImportError: cannot import name ‘complete_to_chordal_graph‘解决

文章目录 ImportError: cannot import name complete_to_chordal_graph解决杂话问题解决注 ImportError: cannot import name complete_to_chordal_graph’解决 杂话 大伙儿应该都用过NetworkX这个库函数吧&#xff0c;是一个很方便的图相关的库&#xff0c;但是如果你的版本…

IDEA更改页面不重启

IDEA更改页面不重启 idea若依 修改包名 idea 1、修改IDEA设置 File -> Settings -> Build Execution Deployment -> Build Project automatically 勾选2、勾选Running Ctrl Shift Alt / 然后选择 Registry&#xff0c;勾上 Compiler.autoMake.allow.when.app.runn…

算法训练营第五十五天|392.判断子序列 115.不同的子序列

目录 Leetcode392.判断子序列Leetcode115.不同的子序列 Leetcode392.判断子序列 文章链接&#xff1a;代码随想录 题目链接&#xff1a;392.判断子序列 思路&#xff1a;正常动规记录&#xff0c;重点在于后面采用判断 class Solution { public:bool isSubsequence(string s, …

【MySQL进阶】视图_存储过程_存储函数_触发器

文章目录 视图基本介绍视图操作视图创建视图查询视图修改视图删除 存储过程基本介绍基本操作存储语法变量IF语句参数传递CASEWHILEREPEATLOOP游标 存储函数触发器基本介绍基本操作 总结 视图 基本介绍 视图概念&#xff1a;视图是一种虚拟存在的数据表&#xff0c;这个虚拟的表…

算法训练营第五十六天|583. 两个字符串的删除操作 72. 编辑距离

目录 Leetcode583. 两个字符串的删除操作Leetcode72. 编辑距离 Leetcode583. 两个字符串的删除操作 文章链接&#xff1a;代码随想录 题目链接&#xff1a;583. 两个字符串的删除操作 思路&#xff1a;直接记录需要改&#xff08;增或删&#xff09;几个&#xff0c;也就是求不…

seafile+onlyoffice集成部署

准备docker-compose version: "3" services:db:image: mariadb:10.11container_name: seafile-mysqlrestart: alwaysenvironment:- MYSQL_ROOT_PASSWORDsea123456 # Requested, set the roots password of MySQL service.- MYSQL_LOG_CONSOLEtruevolumes:- ./data/…

透明拼接屏在汽车领域的应用

随着科技的进步&#xff0c;透明拼接屏作为一种新型的显示技术&#xff0c;在汽车领域的应用越来越广泛。尼伽小编将围绕透明拼接屏在汽车本身、4S店、展会、工厂等方面的应用进行深入探讨&#xff0c;并展望未来的设计方向。 一、透明拼接屏在汽车本身的应用 车窗显示&#x…

openssl3.2/test/certs - 011 - primary client-EKU root: croot-cert

文章目录 openssl3.2/test/certs - 011 - primary client-EKU root: croot-cert概述笔记END openssl3.2/test/certs - 011 - primary client-EKU root: croot-cert 概述 openssl3.2 - 官方demo学习 - test - certs 笔记 \file my_openssl_linux_log_doc_011.txt \note open…

Python入门(一)

anaconda安装 官网&#xff1a;https://www.anaconda.com下载 jupyter lab 简介&#xff1a; 包含了Jupyter Notebook所有功能。 JupyterLab作为一种基于web的集成开发环境&#xff0c;你可以使用它编写notebook&#xff0c;操作终端&#xff0c;编辑markdown文本&#xf…

Linux中文件属性的获取(stat、chmod、Istat、fstat函数的使用)

修改文件权限 函数如下&#xff1a; chmod/fchmod函数用来修改文件的访问权限: #include <sys/stat.h> int chmod(const char *path, mode_t mode); int fchmod(int fd, mode_t mode); 成功时返回0&#xff1b;出错时返回EOF 注意&#xff1a;在vmware和windows共享的文…

NetSuite 文心一言(Ernie)的AI应用

有个故事&#xff0c;松下幸之助小时候所处的年代是明治维新之后&#xff0c;大量引用西洋技术的时期。当时大家对“电”能干什么事&#xff0c;充满好奇。“电能干什么&#xff1f;它能帮我们开门么&#xff1f;” 松下幸之助的爷爷对电不屑&#xff0c;于是就问他。松下幸之助…