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秒 ...
随机推荐
- Open CASCADE Technology(OCCT)概述
OCCT模块结构图 基础类: Foundation Classes module underlies all other OCCT classes; 模型数据: Modeling Data modul ...
- unity3d 让物体移动到点击位置
using UnityEngine; using System.Collections; public class test : MonoBehaviour { //在场景中鼠标点击地面后,角色可以移 ...
- 装饰模式(Decorator)C++实现
装饰模式 层层包装,增强功能.这就是装饰模式的要旨!装饰器模式就是基于对象组合的方式,可以很灵活的给对象添加所需要的功能.它把需要装饰的功能放在单独的类中,并让这个类包装它所要装饰的对象. 意图: 动 ...
- Monad 系列
本系列是在学习Monad时在网上找到的一个老外的博客,作者是MikeHadlow,地址是mikehadlow.blogspot.com, 可惜国内访问不了.这个系列对Monad讲解的浅显易懂,而且有 ...
- DeepMind用ReinforcementLearning玩游戏
原文 : http://dataunion.org/?p=639 1.引言 说到机器学习最酷的分支,非Deep learning和Reinforcement learning莫属(以下分别简称DL和 ...
- Shiro从数据表中初始化资源和权限
之前在测试的Web工程下,我们在applicationContext.xml中配置了shiroFilter资源拦截器信息: <bean id="shiroFilter" cl ...
- vue项目中引用echarts的几种方式
准备工作: 首先我们初始化一个vue项目,执行vue init webpack echart,接着我们进入初始化的项目下.安装echarts, npm install echarts -S //或 ...
- tomcat_logs
tomcat logs 目录下各日志文件的含义 参考地址: http://www.cnblogs.com/signheart/p/0ed0bef7dfadf59534eec76ad4607654.ht ...
- java 常用API 时间
package com.orcal.demc01; import java.text.ParseException; import java.text.SimpleDateFormat; import ...
- Period UVA - 1328_结论题
Code: #include<cstdio> #include<cstring> using namespace std; const int maxn=1000000+5; ...