题目链接:点击打开链接

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

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

哎。题目读错好几次。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. Open CASCADE Technology(OCCT)概述

    OCCT模块结构图 基础类: Foundation Classes module underlies all other OCCT classes; 模型数据: Modeling Data modul ...

  2. unity3d 让物体移动到点击位置

    using UnityEngine; using System.Collections; public class test : MonoBehaviour { //在场景中鼠标点击地面后,角色可以移 ...

  3. 装饰模式(Decorator)C++实现

    装饰模式 层层包装,增强功能.这就是装饰模式的要旨!装饰器模式就是基于对象组合的方式,可以很灵活的给对象添加所需要的功能.它把需要装饰的功能放在单独的类中,并让这个类包装它所要装饰的对象. 意图: 动 ...

  4. Monad 系列

    本系列是在学习Monad时在网上找到的一个老外的博客,作者是MikeHadlow,地址是mikehadlow.blogspot.com,  可惜国内访问不了.这个系列对Monad讲解的浅显易懂,而且有 ...

  5. DeepMind用ReinforcementLearning玩游戏

    原文 :  http://dataunion.org/?p=639 1.引言 说到机器学习最酷的分支,非Deep learning和Reinforcement learning莫属(以下分别简称DL和 ...

  6. Shiro从数据表中初始化资源和权限

    之前在测试的Web工程下,我们在applicationContext.xml中配置了shiroFilter资源拦截器信息: <bean id="shiroFilter" cl ...

  7. vue项目中引用echarts的几种方式

    准备工作: 首先我们初始化一个vue项目,执行vue init webpack echart,接着我们进入初始化的项目下.安装echarts, npm install echarts -S //或   ...

  8. tomcat_logs

    tomcat logs 目录下各日志文件的含义 参考地址: http://www.cnblogs.com/signheart/p/0ed0bef7dfadf59534eec76ad4607654.ht ...

  9. java 常用API 时间

    package com.orcal.demc01; import java.text.ParseException; import java.text.SimpleDateFormat; import ...

  10. Period UVA - 1328_结论题

    Code: #include<cstdio> #include<cstring> using namespace std; const int maxn=1000000+5; ...