HDU 5319 Painter(枚举)
Painter
Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/65536 K (Java/Others)
Total Submission(s): 745 Accepted Submission(s): 345
so there are two kinds of draws, one is like ‘\’ , the other is like ‘/’. In each draw he choose arbitrary number of grids to draw. He always drew the first kind in red color, and drew the other kind in blue color, when a grid is drew by both red and blue,
it becomes green. A grid will never be drew by the same color more than one time. Now give you the ultimate state of the board, can you calculate the minimum time of draws to reach this state.
Each test case begins with an integer number n describe the number of rows of the drawing board.
Then n lines of string consist of ‘R’ ‘B’ ‘G’ and ‘.’ of the same length. ‘.’ means the grid has not been drawn.
1<=n<=50
The number of column of the rectangle is also less than 50.
Output
Output an integer as described in the problem description.
2
4
RR.B
.RG.
.BRR
B..R
4
RRBB
RGGB
BGGR
BBRR
3
6
pid=5324" target="_blank" style="color:rgb(26,92,200); text-decoration:none">5324
5322 5321 5320#include<iostream>
#include<algorithm>
#include<stdio.h>
#include<string.h>
#include<stdlib.h> using namespace std; char pp[91][91];
int v[91][91];
int n,m; int main()
{
int T;
scanf("%d",&T);
while(T--)
{
int ans = 0;
int k;
memset(v,0,sizeof(v));
scanf("%d",&n);
for(int i=0;i<n;i++)
{
scanf("%s",pp[i]);
k = strlen(pp[i]); }
for(int i=0;i<n;i++)
{
for(int j=0;j<k;j++)
{
if((pp[i][j] == 'R' || pp[i][j] == 'G')&& v[i][j] == 0)
{
int ii = i,jj = j;
while((pp[ii][jj] == 'R' || pp[ii][jj] == 'G') && v[ii][jj] == 0)
{
v[ii][jj]++;
//printf("v[%d][%d] = %d\n",ii,jj,v[ii][jj]);
ii = ii + 1;
jj = jj + 1;
if(ii>=n || jj>=k)
{
break;
}
}
ans++;
}
}
}
//printf("ans = %d\n",ans);
for(int i=0;i<n;i++)
{
for(int j=0;j<k;j++)
{
if((pp[i][j] == 'B'&&v[i][j] == 0) || (pp[i][j] == 'G' && v[i][j] == 1))
{
int x = i;
int y = j;
//printf("x = %d y = %d\n",x,y);
while((pp[x][y] == 'B' && v[x][y] == 0) || (pp[x][y] == 'G' && v[x][y] == 1))
{
v[x][y]++;
//printf("v[%d][%d] = %d\n",x,y,v[x][y]);
x = x + 1;
y = y - 1;
if(x>=n || y<0)
{
break;
}
}
ans++;
}
}
}
printf("%d\n",ans);
}
return 0;
}
HDU 5319 Painter(枚举)的更多相关文章
- hdu 5319 Painter(杭电多校赛第三场)
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=5319 Painter Time Limit: 2000/1000 MS (Java/Others) ...
- HDU 5319 Painter (模拟)
题意: 一个画家画出一张,有3种颜色的笔,R.G.B.R看成'\',B看成'/',G看成这两种的重叠(即叉形).给的是一个矩阵,矩阵中只有4种符号,除了3种颜色还有'.',代表没有涂色.问最小耗费多少 ...
- HDU 5319 Painter
题意:红色从左上向右下涂,蓝色从右上向左下涂,既涂红色又涂蓝色就变成绿色,问最少涂几下能变成给的图. 解法:模拟一下就好了,注意细节. 代码: #include<stdio.h> #inc ...
- 模拟+思维 HDOJ 5319 Painter
题目传送门 /* 题意:刷墙,斜45度刷红色或蓝色,相交的成绿色,每次刷的是连续的一段,知道最终结果,问最少刷几次 模拟+思维:模拟能做,网上有更巧妙地做法,只要前一个不是一样的必然要刷一次,保证是最 ...
- hdu 2489(枚举 + 最小生成树)
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=2489 思路:由于N, M的范围比较少,直接枚举所有的可能情况,然后求MST判断即可. #include ...
- hdu 3118(二进制枚举)
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=3118 思路:题目要求是去掉最少的边使得图中不存在路径长度为奇数的环,这个问题等价于在图中去掉若干条边, ...
- hdoj 5319 Painter(模拟题)
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=5319 思路分析:假设颜色R表示为1,颜色B表示为2,颜色G表示为3,因为数据量较小,采用暴力解法即可, ...
- HDU 6351暴力枚举 6354计算几何
Beautiful Now Time Limit: 5000/2500 MS (Java/Others) Memory Limit: 262144/262144 K (Java/Others)T ...
- HDU 5319
Painter Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/65536 K (Java/Others) Total Su ...
随机推荐
- 自定义对话框(jDialog)
[配置项]jDialog options点击收起 一.接口功能 jDialog的默认配置项,本组件提供的所有对话框,都可以通过修改这些配置项来实现不同的效果. 二.详细配置项 /** * 对话框的默认 ...
- C#根據當前DataGridView查詢數據導出Excel
private void btnsuggestinfo_Click(object sender, EventArgs e) { DataTable dt = new DataTable(); dt.C ...
- JS Object 属性判断
in 方法 var shapeInfo = {name:“lium”}; if (“name” in shapeInfo) {...}
- tomcat 去掉项目名后,还可以用项目名
在server.xml添加以下代码: <Context path="/" docBase="../webapps/jeeplus/" reloadable ...
- IOS开发之关键字synchronized
static Config * instance = nil; +(Config *) Instance { @synchronized(self) { if(nil == instance) { ...
- php实现短信验证
PHP实现短信验证的整体思路: 一.申请短信api ->申请网址https://s1.chanyoo.cn/login?url=%2f 二.编写核心代码(thinkPHP5) 示例: <? ...
- Python 1-2模块的循环导入问题
run.py文件: import m1 # 第一次导入 # 验证解决方案一: ''' 正在导入m1 正在导入m2 ''' # print(m1.x) # print(m1.y) # 验证解决方案二: ...
- python3.x Day6 paramiko
python3 paramiko模块,用来进行远程操作linux服务器,利用的就是ssh #利用用户名,密码,进行连接 import paramiko #创建一个SSH对象 ssh=paramiko. ...
- JavaScript在HTML中的应用
JavaScript在HTML中的应用 制作人:全心全意 在HTML文档中可以使用<script>...</script>标记将JavaScript脚本嵌入到其中,在HTML文 ...
- python 连接sqlserver: pymssql
停了一个月,终于还是把这个做了,工作需要!!!在装pymssql时,一直报错,确定了要先装freetds: 1. 安装freetds时报错,搜索到要先进行如下操作: brew unlink freet ...