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

lol做任务领头像网站郑州网络优化实力乐云seo

lol做任务领头像网站,郑州网络优化实力乐云seo,成都公司做网站,本地搭建多个网站前言 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/177215.html

相关文章:

  • 怎么做免费公司网站google seo实战教程
  • 网站备案 公安局网站seo设置是什么意思
  • 不收费的小说网站排名武汉seo网站优化
  • 大数据网站开发工程师注册公司流程和费用
  • 贵阳网站建设公司杭州最好的seo公司
  • 公司企业宣传片的拍摄seo积分系统
  • 在线设计平台崭露头角seo专业培训
  • 二手商品网站开发背景百度快照下载
  • 想要网站导航推广页短视频询盘获客系统
  • wordpress 无法显示广州seo服务
  • 限制网站访问ip关键词排名优化流程
  • 旅游网站建设案例分析青岛seo服务公司
  • 成都专业做网站推广电话seo关键词推广多少钱
  • 淮安做网站的公司互联网营销方案策划
  • 中国国际室内设计网网站建设优化公司
  • 广州做网站建设国内营销推广渠道
  • 二手书网站建设seo推广技术培训
  • 宁波江北区建设局网站重庆百度搜索优化
  • 保健品网站可以做网站今日头条官网登录入口
  • 网站建设制作汕头南宁seo产品优化服务
  • 营销型网站建设哪家公司好对网络营销的认识有哪些
  • 成都建设网站建设免费奖励自己的网站
  • 延庆营销型网站建设投稿网站
  • 杭州做网站的优质公司网站怎么让百度收录
  • 上海门户网站制seo营销推广平台
  • 科普文章在那个网站做网络营销乐云seo
  • 镇江企业网站制作河南自助建站seo公司
  • 石灰土做击实检测网站怎么填企业营销型网站建设
  • 河北网站开发多少钱正规网络公司关键词排名优化
  • 网站建设_网站设计 app制作排名