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 ...
随机推荐
- 模型验证组件 FluentValidation
FluentValidation 是 .NET 下的模型验证组件,和 ASP.NET MVC 基于Attribute 声明式验证的不同处,其利用表达式语法链式编程,使得验证组件与实体分开.正如 Flu ...
- github上完成个人的站点搭建
未完待续 很早就想有一个自己的站点了,可是我买不起服务器,不想研究WordPress,ect.无意间,博主发现了github居然可以实现自己梦想,加之网络上的资料偏旧(或则说github+jekyll ...
- golang 学习 ---- channel
把一个loop放在一个goroutine里跑,我们可以使用关键字go来定义并启动一个goroutine: package main import "fmt" func loop() ...
- Sublime text —— 自定义主题Soda
编辑器的主题有两种,一种是语法高亮颜色主题,一种是编辑器自身显示主题,如果要自定义编辑器样式,个人推荐soda. Ctrl+Shift+p 输入install,接着输入 soda,选择 Theme ...
- Android应用的自动更新模块
软件的自动更新一般都与Splash界面绑定在一起, 由于需要维护的软件界面很复杂, 一个Activity中嵌入ViewPager, 并且逻辑比较复杂, 索性重新写一个Activity, 现在的软件都很 ...
- msf web_delivery模块攻击
目标机:win7 ip:192.168.31.136 攻击机:kai liunx ip:192.168.31.54 一. ...
- haproxy 非常完整的配置
常用配置选项: OPTION 选项: option httpclose :HAProxy会针对客户端的第一条请求的返回添加cookie并返回给客户端,客户端发送后续请求时会发送 此cookie到HAP ...
- 查询系统负载信息 Linux 命令详解
linux uptime命令主要用于获取主机运行时间和查询linux系统负载等信息.uptime命令过去只显示系统运行多久.现在,可以显示系统已经运行了多长 时间,信息显示依次为:现在时间.系统已经运 ...
- JavaScript DOM API初步(整理)
文档对象模型 文档对象模型(Doucment Object Model,DOM)是表示文档(如HTML文档.XML文档)和访问.操作构成文档的各种元素的应用程序接口.在DOM中,HTML文档的层次结构 ...
- ios处理键盘
#pragma mark - Keyboard - (void)addKeyboardNoti { [[NSNotificationCenter defaultCenter] addObserver: ...