hdu1198(模拟搜索)
这个题目,比较恶心,思路很是简单,就是模拟的时候有些麻烦......水题
#include<iostream>
#include<cstdio>
#include<cstring>
using namespace std;
char s[100][100];
int t[400][400],vist[400][400];
int n,m;
int p[13][3][3]={
{
0,1,0,
1,1,0,
0,0,0
}, {
0,1,0,
0,1,1,
0,0,0,
}, {
0,0,0,
1,1,0,
0,1,0,
}, {
0,0,0,
0,1,1,
0,1,0,
}, {
0,1,0,
0,1,0,
0,1,0,
}, {
0,0,0,
1,1,1,
0,0,0,
}, {
0,1,0,
1,1,1,
0,0,0,
}, {
0,1,0,
1,1,0,
0,1,0,
}, {
0,0,0,
1,1,1,
0,1,0,
}, {
0,1,0,
0,1,1,
0,1,0,
}, {
0,1,0,
1,1,1,
0,1,0,
}
};
int fx[4][2]={1,0,-1,0,0,1,0,-1};
void dfs(int x,int y)
{
for(int i=0;i<4;i++)
{
int mx=fx[i][0]+x;
int my=fx[i][1]+y;
if(0<=mx&&mx<3*n&&my>=0&&my<3*m&&!vist[mx][my]&&t[mx][my]==1)
{
vist[mx][my]=1;
dfs(mx,my);
}
}
}
int main()
{ while(scanf("%d%d",&n,&m)>0)
{
if(n==-1&&m==-1) break;
for(int i=0;i<n;i++)
scanf("%s",s[i]);
int cnt=0;
memset(t,0,sizeof(t));
memset(vist,0,sizeof(vist));
for(int i=1;i<3*n;i+=3)
{
//if(i%2==0)
//continue;
for(int j=1;j<3*m;j+=3)
{
//if(j%2==0)
//continue;
int tmp=i-1;
int tmp1=j-1;
int hang=cnt/m;
int lie=cnt%m;
int x=s[hang][lie]-'A';
cnt++;
for(int r=tmp;r<=i+1;r++)
for(int ll=tmp1;ll<=j+1;ll++)
{
if(t[r][ll]==0)
t[r][ll]=p[x][r-tmp][ll-tmp1];
}
}
}
/*for(int i=0;i<3*n;i++)
{
for(int j=0;j<3*m;j++)
printf("%d",t[i][j]);
printf("\n");
}*/
int sum=0;
for(int i=1;i<3*n;i+=3)
{
for(int j=1;j<3*m;j+=3)
{
if(!vist[i][j]&&t[i][j]==1)
{
dfs(i,j);
sum++;
}
}
}
printf("%d\n",sum);
}
return 0;
}
hdu1198(模拟搜索)的更多相关文章
- 【LOJ6254】最优卡组 堆(模拟搜索)
[LOJ6254]最优卡组 题面 题解:常用的用堆模拟搜索套路(当然也可以二分).先将每个卡包里的卡从大到小排序,然后将所有卡包按(最大值-次大值)从小到大排序,并提前处理掉只有一张卡的卡包. 我们将 ...
- 【BZOJ4524】[Cqoi2016]伪光滑数 堆(模拟搜索)
[BZOJ4524][Cqoi2016]伪光滑数 Description 若一个大于1的整数M的质因数分解有k项,其最大的质因子为Ak,并且满足Ak^K<=N,Ak<128,我们就称整数M ...
- 【BZOJ4345】[POI2016]Korale 堆(模拟搜索)
[BZOJ4345][POI2016]Korale Description 有n个带标号的珠子,第i个珠子的价值为a[i].现在你可以选择若干个珠子组成项链(也可以一个都不选),项链的价值为所有珠子的 ...
- JavaScript在表格中模拟搜索多关键词搜索和筛选
模拟搜索需要实现以下功能: 1.用户的模糊搜索不区分大小写,需要小写字母匹配同样可以匹配到该字母的大写单词. 2.多关键词模糊搜索,假设用户关键词以空格分隔,在关键词不完整的情况下仍然可以匹配到包含该 ...
- Codeforces Good Bye 2016 D 模拟搜索?
给出烟花的爆炸方式和爆炸次数 问最后有多少个格子会被炸到 如果dfs的话会超时... 利用模拟每一层来搜索..? 思想就是一开始有一个爆炸点向上 然后模拟完第一段 会产生一个爆炸点 朝两个方向 就用v ...
- HDU 3262 Seat taking up is tough (模拟搜索)
传送门:http://acm.hdu.edu.cn/showproblem.php?pid=3262 题意:教室有n*m个座位,每个座位有一个舒适值,有K个学生在不同时间段进来,要占t个座位,必须是连 ...
- 洛谷 P2689 东南西北【模拟/搜索】
题目描述 给出起点和终点的坐标及接下来T个时刻的风向(东南西北),每次可以选择顺风偏移1个单位或者停在原地.求到达终点的最少时间. 如果无法偏移至终点,输出“-1”. 输入输出格式 输入格式: 第一行 ...
- HDU - 4431 Mahjong (模拟+搜索+哈希+中途相遇)
题目链接 基本思路:最理想的方法是预处理处所有胡牌的状态的哈希值,然后对于每组输入,枚举每种新加入的牌,然后用哈希检验是否满足胡牌的条件.然而不幸的是,由于胡牌的状态数过多(4个眼+一对将),预处理的 ...
- Candy Sharing Game(模拟搜索)
Candy Sharing Game Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Other ...
随机推荐
- HDU 3999 The order of a Tree (先序遍历)
The order of a Tree Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Othe ...
- POJ 2230 Watchcow (欧拉回路)
Watchcow Time Limit: 3000MS Memory Limit: 65536K Total Submissions: 5258 Accepted: 2206 Specia ...
- Linux下安装LAMP(Apache+PHP+MySql)和禅道
1.更新yum源: yum update -y 2.安装Apache+PHP+MySql yum install httpd mysql-devel mysql-server mysql-php ph ...
- ASP.NET实现二维码 ASP.Net上传文件 SQL基础语法 C# 动态创建数据库三(MySQL) Net Core 实现谷歌翻译ApI 免费版 C#发布和调试WebService ajax调用WebService实现数据库操作 C# 实体类转json数据过滤掉字段为null的字段
ASP.NET实现二维码 using System;using System.Collections.Generic;using System.Drawing;using System.Linq;us ...
- git detached
git提交的时候,本地已经提交,却怎么也推送不到服务器,也没显示错误,只显示 everything-up-to-date : 原因是git不在master分支,而是处于detached head(匿名 ...
- js中文乱码问题,编码设为utf-8,但还是乱码问题。
dw中编辑js的时候使用另存为菜单,在存储的时候勾选上一个叫[包括Unicode签名(BOM)(S)]的选项,然后存储.再次在浏览器源码中查看的时候js的中文就正常显示了,查看属性,编码也是UTF-8 ...
- MySQL子查询的优化
本文基于MySQL5.7.19测试 创建四张表,pt1.pt2表加上主键 mysql> create table t1 (a1 int, b1 int); mysql> create ta ...
- 《TCP/IP详解卷1:协议》读书笔记
<TCP/IP详解卷1:协议>读书笔记 - QingLiXueShi - 博客园https://www.cnblogs.com/mengwang024/p/4425834.html < ...
- 【转】Oracle回收站(recyclebin)
我们都比较熟悉windows中的回收站,文件删除后放到回收站里还可以再复原.Oracle回收站的原理完全一样,只是实现的细节方面有些差异.另外回收站中只能回收表和相关的对象包括索引.约束.触发器.嵌套 ...
- 王勇详谈 Linux Deepin 背后的故事
(Linux Deepin最近发布了12.12版本.其也许是国内第一款比较优秀的桌面Linux系统.在此向致力于研发国产OS系统的猿人们表示敬意.虽然Deepin只是基于Ubuntu在桌面应用和UI方 ...