洛谷P3392 涂国旗
P3392 涂国旗
- 107通过
- 507提交
- 题目提供者kkksc03
- 标签
- 难度普及-
提交 讨论 题解
最新讨论
- 直接读字符会wa
- WA?--
- 为什么不对。。。
- 跪求找错
- 快点给钱
- 这不就是荷兰国旗问题吗
题目描述
某国法律规定,只要一个由N*M个小方块组成的旗帜符合如下规则,就是合法的国旗。(毛熊:阿嚏——)
从最上方若干行(>=1)的格子全部是白色的。
接下来若干行(>=1)的格子全部是蓝色的
- 剩下的行(>=1)全部是红色的
现有一个棋盘状的破布,分成了N行M列的格子,每个格子是白色蓝色红色之一,小a希望把这个布改成该国国旗,方法是在一些格子上涂颜料,盖住之前的颜色。
小a很懒,希望涂最少的格子,使这块破布成为一个合法的国旗。
输入输出格式
输入格式:
第一行是两个整数,N,M
接下来N行是一个矩阵,矩阵的每一个小方块是'W'(白),'B'(蓝),'R'(红)中的一个
输出格式:
一个整数,表示至少需要涂多少块。
输入输出样例
4 5
WRWRW
BWRWB
WRWRW
RWBWR
11
说明
样例解释:
目标状态是
WWWWW
BBBBB
RRRRR
RRRRR
一共需要改11个格子
对于100%的数据,N,M<=50
分析:以为是dp,但是仔细一想,发现完全可以枚举哪一行涂什么颜色,这样的话只需要在预处理的时候将第i行涂第j种颜色需要的代价求出来即可.
#include <cstdio>
#include <iostream>
#include <cstring>
#include <algorithm> using namespace std; int n, m,w[],r[],b[],ans = ;
char c[][]; int main()
{
scanf("%d%d", &n, &m);
for (int i = ; i <= n; i++)
for (int j = ; j <= m; j++)
{
cin >> c[i][j];
if (c[i][j] == 'W')
{
r[i]++;
b[i]++;
}
if (c[i][j] == 'R')
{
b[i]++;
w[i]++;
}
if (c[i][j] == 'B')
{
w[i]++;
r[i]++;
}
}
//for (int i = 1; i <= n; i++)
//printf("%d %d %d\n", w[i], b[i], r[i]); for (int i = ; i < n; i++)
for (int j = i + ; j <= n; j++)
{
int temp = ;
for (int k = ; k <= n; k++)
{
if (k < i)
{
temp += w[k];
//printf("1 %d\n", temp);
}
if (k >= i && k < j)
{
temp += b[k];
//printf("2 %d\n", temp);
}
if (k >= j)
{
temp += r[k];
//printf("3 %d\n", temp);
}
}
ans = min(temp, ans);
//printf("%d\n", temp);
}
printf("%d", ans); //while (1); return ;
}
洛谷P3392 涂国旗的更多相关文章
- 洛谷 P3392 涂国旗
P3392 涂国旗 题目描述 某国法律规定,只要一个由N*M个小方块组成的旗帜符合如下规则,就是合法的国旗.(毛熊:阿嚏——) 从最上方若干行(>=1)的格子全部是白色的. 接下来若干行(> ...
- 洛谷P4155 [SCOI2015]国旗计划(贪心,树形结构,基数排序)
洛谷题目传送门 \(O(n)\)算法来啦! 复杂度优化的思路是建立在倍增思路的基础上的,看看楼上几位巨佬的描述吧. 首先数组倍长是一样的.倍增法对于快速找到\(j\)满足\(l_j+m\le r_i\ ...
- 洛谷⑨月月赛Round2 P3392涂国旗[DP]
题目描述 某国法律规定,只要一个由N*M个小方块组成的旗帜符合如下规则,就是合法的国旗.(毛熊:阿嚏——) 从最上方若干行(>=1)的格子全部是白色的. 接下来若干行(>=1)的格子全部是 ...
- [bzoj4444] [loj#2007] [洛谷P4155] [Scoi2015] 国旗计划
Description \(A\) 国正在开展一项伟大的计划--国旗计划.这项计划的内容是边防战士手举国旗环绕边境线奔袭一圈.这项计划需要多名边防战士以接力的形式共同完成,为此,国土安全局已经挑选了 ...
- 洛谷⑨月月赛Round2 官方比赛 OI
自评: (完成时间3.5时) 第一题 模拟 虽然A了,代码敲得有点慢 第二题 最短路 第一次敲对了,又考虑数据范围和答案范围,改错了,100分改成42分.QAQ. 第三题 乱搞 80分 还可以(因为没 ...
- 洛谷P1162—填涂颜色
这应该是是第一次记录洛谷题库里的题目吧: 题目描述 由数字00组成的方阵中,有一任意形状闭合圈,闭合圈由数字11构成,围圈时只走上下左右44个方向.现要求把闭合圈内的所有空间都填写成22.例如:6 \ ...
- 洛谷P3703 [SDOI2017]树点涂色(LCT,dfn序,线段树,倍增LCA)
洛谷题目传送门 闲话 这是所有LCT题目中的一个异类. 之所以认为是LCT题目,是因为本题思路的瓶颈就在于如何去维护同颜色的点的集合. 只不过做着做着,感觉后来的思路(dfn序,线段树,LCA)似乎要 ...
- 洛谷 P1656 炸铁路
P1656 炸铁路 题目提供者kkksc03 标签图论搜索/枚举洛谷原创 难度普及/提高- 题目描述 因为某国被某红色政权残酷的高压暴力统治.美国派出将军uim,对该国进行战略性措施,以解救涂炭的生灵 ...
- BZOJ1079或洛谷2476 [SCOI2008]着色方案
一道记忆化搜索 BZOJ原题链接 洛谷原题链接 发现对于能涂木块数量一样的颜色在本质上是一样的,所以可以直接压在一个状态,而这题的数据很小,直接暴力开\(6\)维. 定义\(f[a][b][c][d] ...
随机推荐
- Tomcat 在mac中Operation not permitted
5.执行/Library/Tomcat/bin下的startup.sh,然后打开http://localhost:8080查看是否Tomcat已经启动,若要停止服务器就运行同目录下的shutdown. ...
- Object有哪些公用方法?
protected Object clone() 创建并返回此对象的一个副本.public boolean equals(Object obj) 指示其他某个对象是否与此对象"相等" ...
- About SQLite
About SQLite See Also... Features When to use SQLite Frequently Asked Questions Well-known Users Boo ...
- 基本的HTML标签
html的基本标签: <html><body> <h1>My First Heading</h1><h2>this second headi ...
- Python底层socket库
Python底层socket库将Unix关于网络通信的系统调用对象化处理,是底层函数的高级封装,socket()函数返回一个套接字,它的方法实现了各种套接字系统调用.read与write与Python ...
- yii框架中的一些小细节配置问题
1.查看运行时间'db'=>array( 'connectionString' => 'mysql:host=localhost;dbname=shop', 'emul ...
- Linux 随机生成随机数
#!/bin/bash echo $(($RANDOM % 39)) 表示生成0-39的随机数 并且不为0和39
- stl::map之const函数访问
如何在const成员数中访问stl::map呢?例如如下代码: string ConfigFileManager::MapQueryItem(const string& name) const ...
- 兼容性js中setTimeout 传参“保值”方案
这里所谓“保值”,是指在setTimeout中指定的时间后,执行指定的方法所用到的“参数”值,跟执行setTimeout时该“参数”值一样.是不是有点懵?看如下例子: ================ ...
- Mac下Virtual Box Host-Only网络配置
Mac下的虚拟机其实有很多,Parallels.VMware Fusion.Virtual Box都不错,Parallels是目前试过感觉最好的,Fusion装64位系统驱动支持似乎不完善,而且混合模 ...