当前位置: 首页 > wzjs >正文

学做动态网站正规职业技能培训机构

学做动态网站,正规职业技能培训机构,免展网站后台注册,兴义之窗网站怎么做前言 BFS 算法在 AtCoder 比赛中还是会考的,因为不常练习导致没想到,不仅错误 TLE 了很多,还影响了心态,3 发罚时后才 AC。 思路 首先,我们把所有位置和出口的距离算出来(用 BFS)&#xff0c…

前言

BFS 算法在 AtCoder 比赛中还是会考的,因为不常练习导致没想到,不仅错误 TLE 了很多,还影响了心态,3 发罚时后才 AC。

思路

首先,我们把所有位置和出口的距离算出来(用 BFS),记为 d x , y d_{x,y} dx,y,顺便求出离它最近的出口坐标,记为 ( X x , y , Y x , y ) (X_{x,y},Y_{x,y}) (Xx,y,Yx,y)。我们发现这个需要在队列里记下这个点的最近出口位置以及具体坐标。

然后我们像涟漪一样扩散着用 BFS 去求方向。找每个位置的上一步,然后判断是否是一条路上的(即最近出口相同且距离大于这个点的距离),如果是,那么修改方向并压入队列,否则忽略。

似乎很成功地做完了,那么有哪些易错点呢?

  • 更新方向的时候一定要注意距离是否大于当前点的距离。注意:必须是严格大于,等于也不可以,因为加上这一步之后就不是最优。
  • 记得把安全疏散出口的最近出口位置设为它自己。
  • 一定要用 BFS,而不是 DFS,两个函数都得用 BFS。

代码

AC 提交记录:Submission #65683293。

TLE 提交记录:第一发、第二发、第三发。

#include <cstdio>
#include <iostream>
#include <algorithm>
#include <cstring>
#include <queue>
using namespace std;int h, w, d[1010][1010];
char a[1010][1010];
pair<int, int> p[1010][1010];
int dx[] = {-1, 1, 0, 0};
int dy[] = {0, 0, -1, 1};
char cc[] = {'v', '^', '>', '<'};void work()
{queue<pair<pair<int, int>, pair<int, int> > > q;for (int x = 1; x <= h; x++)for (int y = 1; y <= w; y++)if (a[x][y] == 'E'){p[x][y] = make_pair(x, y);q.push(make_pair(make_pair(x, y), make_pair(x, y)));d[x][y] = 0;}while (q.size()){int fx = q.front().first.first;int fy = q.front().first.second;int xx = q.front().second.first;int yy = q.front().second.second;q.pop();for (int i = 0; i < 4; i++){int nx = fx + dx[i];int ny = fy + dy[i];if (nx < 1 || nx > h)continue;if (ny < 1 || ny > w)continue;if (a[nx][ny] != '.')continue;if (d[nx][ny] > d[fx][fy] + 1){d[nx][ny] = d[fx][fy] + 1;p[nx][ny] = make_pair(xx, yy);q.push(make_pair(make_pair(nx, ny), make_pair(xx, yy)));}}}
}void calc()
{queue<pair<int, int> > q;for (int x = 1; x <= h; x++)for (int y = 1; y <= w; y++)if (a[x][y] == 'E')q.push(make_pair(x, y));while (q.size()){int fx = q.front().first;int fy = q.front().second;q.pop();for (int i = 0; i < 4; i++){int nx = fx + dx[i];int ny = fy + dy[i];if (nx < 1 || nx > h)continue;if (ny < 1 || ny > w)continue;if (a[nx][ny] != '.')continue;if (p[nx][ny] != p[fx][fy])continue;if (d[nx][ny] <= d[fx][fy])continue;a[nx][ny] = cc[i];q.push(make_pair(nx, ny));}}
}int main()
{cin >> h >> w;for (int i = 1; i <= h; i++)for (int j = 1; j <= w; j++)cin >> a[i][j];memset(d, 0x3f, sizeof(d));work();calc();for (int i = 1; i <= h; i++){for (int j = 1; j <= w; j++)cout << a[i][j];cout << endl;}return 0;
}
http://www.dtcms.com/wzjs/457394.html

相关文章:

  • 做网站图片不够大seo站点是什么意思
  • 网页小游戏的网站腾讯广告联盟官网
  • 大牌网站设计长沙百度首页优化排名
  • 杭州网站现场备案如何优化网站首页
  • html5网站开发价格nba实力榜最新排名
  • 湖北专业的网瘾戒除学校收费标准厦门网站流量优化价格
  • 枣强网站建设公司企业qq邮箱
  • 北京高端购物商场网站优化排名方法
  • mvc5做博客网站优化网站排名技巧
  • 网站建设开票分类编码网上培训
  • 浙江平台网站建设哪家有给企业做网站的公司
  • 深圳网站建设建设网络营销策略包括
  • 少儿编程哪家培训机构好seo1新地址在哪里
  • 网站怎么做优化排名百度seo原理
  • 丹徒网站建设包括哪些看书网站排名
  • 丰台做网站制作网站
  • 做网站联盟市场宣传推广方案
  • 网络推广最好的网站网站排名查询工具
  • 公司网站建设模块简介网络营销的方式和手段
  • 网站服务器搭建及配置的具体步骤知名品牌营销策略
  • 宁波建设监理协会网站搜索引擎营销名词解释
  • 网页网站公司如何做备份搜索引擎网站有哪些
  • 常州做网站的公司建站公司哪家好
  • 营销云平台语音外呼四川旅游seo整站优化
  • 建设网站的运行费包括什么地方线上营销怎么推广
  • 城阳网站开发公司建设网站费用
  • wordpress add_permastruct十堰seo优化方法
  • 纪委网站举报怎么做网站如何优化排名
  • 推广信息哪个平台好专业搜索引擎seo服务
  • 怎么用sharepoint做网站seo培训资料