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 ...
随机推荐
- 【MongoDB】MongoDB的java驱动包使用
要在Java中使用Mongo数据库 首先导入驱动包mongo-java-driver.jar. 然后获得库,获得集合.就可以对数据库操作了,比如: //创建MongoClient对象 MongoCli ...
- Maven最佳实践:版本管理【转】
什么是版本管理 首先,这里说的版本管理(version management)不是指版本控制(version control),但是本文假设你拥有基本的版本控制的知识,了解subversion的基本用 ...
- Git 别名(分布式版本控制系统)
1.Git 别名 Git 并不会在你输入部分命令时自动推断出你想要的命令.如果不想每次都输入完整的 Git 命令,可以通过 git config 文件来轻松地为每一个命令设置一个别名.这里有一些例子你 ...
- php封装数据库函数
从Thinkphp里面抽离出来的数据库模块,感觉挺好用 common.php <?PHP /** * 通用函数 */ //包含配置文件 if (is_file("config.php& ...
- React icon bak
- 【转载并整理】Linux - centOS 6 SVN服务器安装、配置及开机启动
以前在windows上安装svn服务器,用的是VisualSVN-Server用起来还不错,但只能用在windows,在linux上部署使用是 subversion,具体说明如下 参考原文:http: ...
- JVM 入门三板斧
一个JVM实例只存在一个堆内存,堆内存的大小是可以调节的.类加载器读取了类文件后,需要把类.方法.常变量放到堆内存中,保存所有引用类型的真实信息,以方便执行器执行,堆内存分为三部分: Young Ge ...
- 个人用户使用genymotion 模拟器
genymotion android模拟器速度快,比较好用.对公司使用的是要收费的,但是对个人使用还是免费的,所以个人用户还可以继续使用.使用方法 1.注册账号,填写用户名.邮箱.密码.公司类型(选g ...
- 清理kafka zookeeper
; ; /; rm -rf /app/zookeeper/logs/*; rm -rf /app/pet_kafka_emds2_cluster/kafka-logs/*; rm -rf /app/p ...
- 基础004_V7-DSP Slice
主要参考ug479.pdf.之前的文章:FIR调用DSP48E_05.本文主要记录基本用法. 一.DSP48核 A-参数说明 instrctions,多个功能,通过sel选用 目前没发现C勾选与否,有 ...