hdu5319 Painter(模拟)
题目链接:点击打开链接
题目大意:给一个矩形。有两把刷子,一把刷红色,一把刷蓝色,红色的方向是东南,蓝色的方向是西北,红色加蓝色等于绿色,如今已知这面墙当前的状态。求从白墙到这个状态最少刷了多少次。
思路:由于仅仅能沿对角线刷。所以要最少肯定是对角线上的连续的颜色所有一次刷完。直接模拟就可以。
哎。题目读错好几次。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(模拟)的更多相关文章
- 2015 多校联赛 ——HDU5319(模拟)
Painter Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/65536 K (Java/Others) Total Su ...
- HDU 5319 Painter (模拟)
题意: 一个画家画出一张,有3种颜色的笔,R.G.B.R看成'\',B看成'/',G看成这两种的重叠(即叉形).给的是一个矩阵,矩阵中只有4种符号,除了3种颜色还有'.',代表没有涂色.问最小耗费多少 ...
- HDU-5319 Painter,深搜标记!
Painter 题意:有一个棋盘n行,列数不超过50,用red和blue给这个棋盘涂色,每个格子每种颜色最多涂一次,如果两种颜色都涂了则该格子颜色为Green;red以斜杠'\'方式涂色,bule以' ...
- hdoj 5319 Painter(模拟题)
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=5319 思路分析:假设颜色R表示为1,颜色B表示为2,颜色G表示为3,因为数据量较小,采用暴力解法即可, ...
- hdu5319 简单模拟
题意很好懂,大致就是三种颜色,红和蓝一起会变绿,给个终态矩阵,问从原始状态到终态最少画几笔? 按一定规则画 思路就是记红为1,蓝为2,绿为3,先遍历绿色,针对每一块绿色进行删除,每找到一块绿色,首先 ...
- 模拟+思维 HDOJ 5319 Painter
题目传送门 /* 题意:刷墙,斜45度刷红色或蓝色,相交的成绿色,每次刷的是连续的一段,知道最终结果,问最少刷几次 模拟+思维:模拟能做,网上有更巧妙地做法,只要前一个不是一样的必然要刷一次,保证是最 ...
- [hdu5319]二进制表示,简单模拟
题意:给一个矩形,矩形里面画了4种符号,'.'表示没画线,'R'表示画了红线,'B'表示画了蓝线,'G'表示红线和蓝线同时画了,并且矩形主对角线上只能画红线,副对角线上只能画蓝线,问最少画多少条线才能 ...
- QT高级运用之粒子模拟(Particle Simulations)
粒⼦模拟是计算机图形技术的可视化图形效果.典型的效果有:落叶,⽕焰,爆炸,流星,云等等.它不同于其它图形渲染, 粒⼦是基于模糊来渲染.它的结果在基于像素下是不可预测的.粒⼦系统的参数描述了随机模拟的边 ...
- QT:“下载速度柱状图”的模拟实现——思路真好,会动脑筋,连我都有了启发(这个思路好像是通用的)
不知是哪个版本的迅雷,有个“下载速度柱状图”的小界面,我比较喜欢(只不过最新版本的迅雷却没了),所以决定来山寨一个.当然,这个山寨品不能下载文件,呵呵. 思路:1:将界面的背景涂成黑色2:每隔0.1秒 ...
随机推荐
- poj--2553--The Bottom of a Graph (scc+缩点)
The Bottom of a Graph Time Limit : 6000/3000ms (Java/Other) Memory Limit : 131072/65536K (Java/Oth ...
- ASCII编码
ASCII(American Standard Code for Information Interchange,美国信息互换标准代码,ASCⅡ)是基于拉丁字母的一套电脑编码系统.它主要用于显示现代英 ...
- 从默认析构函数学习c++,new,delete,内存泄漏,野指针
默认析构函数:当系统没有显式定义析构函数,编译器同样会为对象定义一个默认析构函数,默认的析构函数只能释放普通数据成员所占用的空间,无法通过释放通过new和malloc进行申请的空间,因此避免内存泄漏, ...
- CI中的数据库操作以及AR连贯操作
要使用CI中的数据库操作,首先我们应该在CI的 application/config/databass.php 文件中配置数据库信息,通常就是配置主机名,用户名,密码,数据库名,表前缀(dbprefi ...
- Educational Codeforces Round 35
Nearest Minimums 相同的数里最小的数里的最小距离 Solution Two Cakes Solution Three Garlands 瞎比试 Solution Inversion C ...
- hdu3488 / hdu3435 / hdu1853 最小费用最大流 圈 拆点
题目大意: 在一个有向图中,求经过所有点的最小圈. 思路: (如果是用二分图的完美匹配来做,那么直接上模版就好了).http://www.cnblogs.com/Potato-lover/p/3991 ...
- sites for debugging script
1. javascript debugger online: http://jsfiddle.net/ 2. script(js,python,ruby) debugger online: http: ...
- DB2 char长度问题
问题:发现用char转换了后的值长度都变为了11,更长的变为了254
- 「Redis 笔记」常用命令
编号 命令 描述 1 DEL key 此命令删除一个指定键(如果存在). 2 DUMP key 此命令返回存储在指定键的值的序列化版本. 3 EXISTS key 此命令检查键是否存在. 4 EXPI ...
- TortoiseSvn问题研究(一)
问题描述 今天在工作中遇到一个SVN方面的问题,牵扯出使用SVN这一段时间的一系列问题. 具体来说,是这样的: 上周五有上线分支,自己的分支需要merge: 很多项目小组都在开发这个项目,再往前好像也 ...