Kilani and the Game-扩散形式的搜索
思路:这种扩散走法的并且有速度。我们需要一层一层的入队, 而且 根据题目要求 按编号处理
例如q1队列中有 1 1 1 2 2 2 2 3 3 3 3 3 3 3 那么我们需要 把 id = 1 的一起处理
把 1 1 1 push 到 q2 然后只要不超过 s [ id = 1 ] 的速度 ,就一直进行bfs ,当到达了 s [ id = 1 ]的那些点可以放入q1中,
.
#include<bits/stdc++.h>
using namespace std;
#define maxn 1234
int to[5][3]= {{1,0},{0,1},{0,-1},{-1,0}};
char mmp[maxn][maxn];
int n,m,p,s[23],pre;
int dp[maxn][maxn],tong[55];
bool judge(int x,int y)
{
if(x<0||y<0||x>=n||y>=m)return false;
if(dp[x][y]!=0||mmp[x][y]=='#')return false;
return true;
}
struct node
{
int x,y,id,step;
} top,tp,op;
vector<node>st[25];
void bfs()
{
queue<node>q1,q2;
for(int i=1; i<=p; i++)
for(int j=0; j<st[i].size(); j++)
q1.push(st[i][j]);
pre=1;
while(!q1.empty())
{
top=q1.front();
while(top.id==pre&&!q1.empty())
{
q1.pop();
q2.push(top);
if(q1.empty())break;
top=q1.front();
}
pre=top.id;
while(!q2.empty())
{
op=q2.front();
q2.pop();
for(int i=0; i<4; i++)
{
tp=op;
tp.x+=to[i][0];
tp.y+=to[i][1];
if(judge(tp.x,tp.y))
{
tp.step++;
dp[tp.x][tp.y]=tp.id;
if(tp.step==s[tp.id])
tp.step=0,q1.push(tp);
else q2.push(tp);
}
}
}
}
}
int main()
{
scanf("%d%d%d",&n,&m,&p);
for(int i=1; i<=p; i++)
scanf("%d",&s[i]);
for(int i=0; i<n; i++)
{
scanf("%s",mmp[i]);
for(int j=0; j<m; j++)
{
if(mmp[i][j]!='#'&&mmp[i][j]!='.')
{
int id=mmp[i][j]-'0';
st[id].push_back(node{i,j,id,0});
dp[i][j]=id;
}
}
}
bfs();
for(int i=0; i<n; i++)
for(int j=0; j<m; j++)
tong[dp[i][j]]++;
for(int i=1; i<=p; i++)
{
printf("%d",tong[i]);
if(i<p)printf(" ");
else printf("\n");
}
return 0;
}
Kilani and the Game-扩散形式的搜索的更多相关文章
- todolist形式的搜索框,分开组件写的,点击上下键时,框内显示当前选中的内容
### 首先 安装react 脚手架 cnpm install create-react-app -g //只需要在电脑上安装一次就好了,以后不用再下载了 ### 创建项目 crea ...
- 转:在ElasticSearch之下(图解搜索的故事)
ElasticSearch 2 (9) - 在ElasticSearch之下(图解搜索的故事) 摘要 先自上而下,后自底向上的介绍ElasticSearch的底层工作原理,试图回答以下问题: 为什么我 ...
- poj--1579--(DFS+记忆化搜索之经典)
记忆化搜索 记忆化搜索:算法上依然是搜索的流程,但是搜索到的一些解用 动态规划的那种思想和模式作一些保存. 一般说来,动态规划总要遍历所有的状态,而搜索可以排除一些无效状态. 更重要的是搜索还可以 ...
- elasticsearch(4) 轻量搜索
一 空搜索 搜索API的最基础的形式是没有指定任何查询的空搜索 ,它简单地返回集群中所有索引下的所有文档: 示例 GET 127.0.0.1:9200/_search 响应 { , "tim ...
- ElasticSearch 2 (9) - 在ElasticSearch之下(图解搜索的故事)
ElasticSearch 2 (9) - 在ElasticSearch之下(图解搜索的故事) 摘要 先自上而下,后自底向上的介绍ElasticSearch的底层工作原理,试图回答以下问题: 为什么我 ...
- 张春晖让视频的每词每句都可搜索:Autotiming 可以自动配字幕,还将改变哪些领域?
张春晖让视频的每词每句都可搜索:Autotiming 可以自动配字幕,还将改变哪些领域? 对于一些电视观众来说,寻找电视节目字幕中“有趣”的Bug,拍照发到网上与其他人共同嘲笑一下,是一种观看节目之外 ...
- Lucene.Net 学习(搜索部分)(低要求,写给自己看)
1. 搜索 排序:lucene 提供了Sort类对结果进行排序 提供了Filter类对查询条件进行限制 你或许会不自觉地拿它跟SQL语句进行比较:“lucene能执行and.or.order by.w ...
- ElasticSearch搜索
1.搜索---最基本的工具 我们可以将一个 JSON 文档扔到 Elasticsearch 里,然后根据 ID 检索.但 Elasticsearch 真正强大之处在于可以从无规律的数据中找出有意义的信 ...
- elasticsearch从入门到出门-03-多种搜索
1.query string search 2.query DSL 3.query filter 4.full-text search 5.phrase search 6.highlight sear ...
随机推荐
- 前端安全类——CSRF/XSS
CSRF 概念:跨站请求伪造 全称:Cross-site request forgery 攻击原理:网站中某一个接口存在漏洞,用户在注册网站登录过 防御措施: 1.Token验证:引诱链接只会自动携带 ...
- 前端面试题整理—Webpack篇
1.什么是webpack,与grunt和gulp有啥不同 webpack是一个模块打包工具,在webpack里面一切皆模块 通过loader转换文件,通过plugin注入钩子,最后输出有多个模块组合成 ...
- 浅谈 JSP & Servlet
body { text-align: center; } div.develon { background-color: #cccccc; font-size: 20px; } 背景 相信大家都见过这 ...
- mac配置go使用gopm下载第三方包
打开zshrc文件 vim ~/.zshrc 输入变量 export GOPATH="/Users/chennan/go" #这个自定义 export GOBIN=$GOPATH/ ...
- 删除Win10资源管理器中的3D对象/音乐/视频文件夹
Win10如何删除资源管理器中的3D对象/音乐/视频等文件夹?使用Win10系统的用户都知道,打开此电脑之后,资源管理上面会显示文档/音乐/视频等7个文件夹,一些用户认为很少使用到它们,想要除之而后快 ...
- 微信小程序开发学习(一)
一.各种JSON配置 1.小程序配置app.json 为小程序全局配置,包括所有页面路径.界面表现.网络超时时间.底部tab等,类比APP开发中manifest配置. 2.工具配置project.co ...
- The walking dead
邪恶令好人团结 Facing evil brings good people together 只是没有人觉得自己是邪恶的一边 No one ever thinks that they’re the ...
- 使用element-ui遇到的各种小问题
一.Dialog对话框 1.在使用嵌套Dialog的时候,会出现遮罩层在内容的上方这种错乱情况 解决办法:http://element-cn.eleme.io/#/zh-CN/component/di ...
- springboot idea 代码更改自己编译设置
第一步:在pom.xml文件中添加springboot 编译依赖 <dependency> <groupId>org.springframework.boot</grou ...
- Uni-app页面生命周期
学习任何框架必须将其生命周期了然于胸. uni-app支持如下页面生命周期函数: onLoad 监听页面加载,其参数为上个页面传递的数据,参数类型为object(用于页面传参),示例中可参考 onSh ...