题目链接:点击打开链接

题目大意:给一个矩形。有两把刷子,一把刷红色,一把刷蓝色,红色的方向是东南,蓝色的方向是西北,红色加蓝色等于绿色,如今已知这面墙当前的状态。求从白墙到这个状态最少刷了多少次。

思路:由于仅仅能沿对角线刷。所以要最少肯定是对角线上的连续的颜色所有一次刷完。直接模拟就可以。

哎。题目读错好几次。wa了好几发,差点报警了。

#include<stdio.h>
#include<string.h>
int main()
{
char mp[55][55];
int T,n,i,j,k,ans;
bool vis[55][55];
scanf("%d",&T);
while(T--)
{
ans=0;
scanf("%d",&n);
for(i=0;i<n;i++)
scanf("%s",mp[i]);
int l=strlen(mp[0]); for(i=0;i<n;i++)
for(j=0;j<l;j++)
{ if(mp[i][j]=='G'){
int x=i+1;
int y=j+1;
while(1){
if(x<0||y<0||x>=n||y>=l)break;
if(mp[x][y]=='R')mp[x][y]='.';
else if(mp[x][y]=='G')mp[x][y]='B';
else if(mp[x][y]=='.'||mp[x][y]=='B')break;
x++;y++;
}
x=i+1;y=j-1;
while(1){
if(x<0||y<0||x>=n||y>=l)break;
if(mp[x][y]=='B')mp[x][y]='.';
else if(mp[x][y]=='G')mp[x][y]='R';
else if(mp[x][y]=='.'||mp[x][y]=='R')break;
x++;y--;
}
ans+=2;
}
else if(mp[i][j]=='R'){
int x=i+1;
int y=j+1;
while(1){
if(x<0||y<0||x>=n||y>=l)break;
if(mp[x][y]=='R')mp[x][y]='.';
else if(mp[x][y]=='G')mp[x][y]='B';
else if(mp[x][y]=='.'||mp[x][y]=='B')break;
x++;y++;
}
ans++;
}
else if(mp[i][j]=='B'){
int x=i+1;
int y=j-1;
while(1){
if(x<0||y<0||x>=n||y>=l)break;
if(mp[x][y]=='B')mp[x][y]='.';
else if(mp[x][y]=='G')mp[x][y]='R';
else if(mp[x][y]=='.'||mp[x][y]=='R')break;
x++;y--;
}
ans++;
} }
printf("%d\n",ans);
}
return 0;
}

hdu5319 Painter(模拟)的更多相关文章

  1. 2015 多校联赛 ——HDU5319(模拟)

    Painter Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/65536 K (Java/Others) Total Su ...

  2. HDU 5319 Painter (模拟)

    题意: 一个画家画出一张,有3种颜色的笔,R.G.B.R看成'\',B看成'/',G看成这两种的重叠(即叉形).给的是一个矩阵,矩阵中只有4种符号,除了3种颜色还有'.',代表没有涂色.问最小耗费多少 ...

  3. HDU-5319 Painter,深搜标记!

    Painter 题意:有一个棋盘n行,列数不超过50,用red和blue给这个棋盘涂色,每个格子每种颜色最多涂一次,如果两种颜色都涂了则该格子颜色为Green;red以斜杠'\'方式涂色,bule以' ...

  4. hdoj 5319 Painter(模拟题)

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=5319 思路分析:假设颜色R表示为1,颜色B表示为2,颜色G表示为3,因为数据量较小,采用暴力解法即可, ...

  5. hdu5319 简单模拟

    题意很好懂,大致就是三种颜色,红和蓝一起会变绿,给个终态矩阵,问从原始状态到终态最少画几笔?  按一定规则画 思路就是记红为1,蓝为2,绿为3,先遍历绿色,针对每一块绿色进行删除,每找到一块绿色,首先 ...

  6. 模拟+思维 HDOJ 5319 Painter

    题目传送门 /* 题意:刷墙,斜45度刷红色或蓝色,相交的成绿色,每次刷的是连续的一段,知道最终结果,问最少刷几次 模拟+思维:模拟能做,网上有更巧妙地做法,只要前一个不是一样的必然要刷一次,保证是最 ...

  7. [hdu5319]二进制表示,简单模拟

    题意:给一个矩形,矩形里面画了4种符号,'.'表示没画线,'R'表示画了红线,'B'表示画了蓝线,'G'表示红线和蓝线同时画了,并且矩形主对角线上只能画红线,副对角线上只能画蓝线,问最少画多少条线才能 ...

  8. QT高级运用之粒子模拟(Particle Simulations)

    粒⼦模拟是计算机图形技术的可视化图形效果.典型的效果有:落叶,⽕焰,爆炸,流星,云等等.它不同于其它图形渲染, 粒⼦是基于模糊来渲染.它的结果在基于像素下是不可预测的.粒⼦系统的参数描述了随机模拟的边 ...

  9. QT:“下载速度柱状图”的模拟实现——思路真好,会动脑筋,连我都有了启发(这个思路好像是通用的)

    不知是哪个版本的迅雷,有个“下载速度柱状图”的小界面,我比较喜欢(只不过最新版本的迅雷却没了),所以决定来山寨一个.当然,这个山寨品不能下载文件,呵呵. 思路:1:将界面的背景涂成黑色2:每隔0.1秒 ...

随机推荐

  1. php与java语法的区别

    php与java语法的区别 个人觉得在学习语言时,可以通过比较来进行学习.由于长时间写java代码,对java的基本语法还算熟悉,现在转学php,就php中基本语法与java基本语法差异进行比较. 1 ...

  2. day63-webservice 08.在web项目中配置带有接口的webservice服务

    这个是配置带有接口的WebService的服务. http://localhost:8080/cxf-web-server/service 带有接口的实现类也给它做好了.jaxws:endpoint是 ...

  3. [牛客网练习赛 45 F] Magic Slab 解题报告 (最大权闭合子图)

    interlinkage: https://ac.nowcoder.com/acm/contest/847/F description: solution: 最大权闭合子图; 每个单元格看成一个正权点 ...

  4. POJ-3061 Subsequence 二分或尺取

    题面 题意:给你一个长度为n(n<100000)的数组,让你找到一个最短的连续子序列,使得子序列的和>=m  (m<1e9) 题解: 1 显然我们我们可以二分答案,然后利用前缀和判断 ...

  5. 机器学习——SVM讲解

    支持向量机(Support Vector Machine) SVM是一类按监督学习方式对数据进行二元分类的广义线性分类器,决策边界是对学习样本求解的最大边距超平面.只需要知道,SVM是一个有监督的分类 ...

  6. JS+jquery 计算服务器控件textbox的值并显示在lable上

    更好的方法求共同学习. //通用            function Change(clientId) {                var sampleQuantity = $(" ...

  7. C++数字图像处理(1)-伽马变换

    https://blog.csdn.net/huqiang_823/article/details/80767019 1.算法原理    伽马变换(幂律变换)是常用的灰度变换,是一种简单的图像增强算法 ...

  8. webpack-1

    1.webpack 安装新项目npm install --save-dev webpack如果版本较老,在package,json中找到版本号,修改成你要的版本号,在删除node-model文件夹,执 ...

  9. 数据结构——栈的实现(数组、Java)

    巩固数据结构 栈是一种有限制的线性表 只能对表尾进行操作 package com.shine.test.datastruct; import java.util.Arrays; public clas ...

  10. VS2012编译PCL1.70的过程

    以防博主删除文档,重新copy一遍... 关于个人的几个注意事项: 对于boost,可以使用vc100的库,来编译VC110的代码: 对于确实的包含,一个一个添加,要耐心等待!!! 原文链接:http ...