CF1063B Labyrinth

01BFS 和普通的01BFS不一样的是这题可以重复走

从(sx,sy)到(x,y)假设向左走了l步向右走了r步 则有sx+r-l=x 即l-r=sx-x为定值 所以向左走越多步则向右也走越多

我们可以只看向右走 然后以向右就可以表达出向左走 跑一遍01BFS 最后统计答案

#include<bits/stdc++.h>
using namespace std;
typedef pair<int,int> pii;
const int N=2000+5,M=1000+5,inf=0x3f3f3f3f,P=9999973;
int n,m,r,c,L,R,ans=0;
char mp[N][N];
template <class t>void rd(t &x){x=0;int w=0;char ch=0;while(!isdigit(ch)) w|=ch=='-',ch=getchar();while(isdigit(ch)) x=(x<<1)+(x<<3)+(ch^48),ch=getchar();x=w?-x:x;
}//右 左 下 上
int dx[5]={0,0,1,-1};
int dy[5]={1,-1,0,0};
deque<pii>q;
int dis[N][N];
void bfs(pii s){memset(dis,inf,sizeof(dis));while(!q.empty()) q.pop_front();q.push_back(s),dis[s.first][s.second]=0;while(!q.empty()){pii tmp=q.front();q.pop_front();int x=tmp.first,y=tmp.second;for(int i=0;i<4;++i){int nx=x+dx[i],ny=y+dy[i];if(nx&&nx<=n&&ny&&ny<=m&&mp[nx][ny]=='.'){if(dis[nx][ny]>dis[x][y]+(!i)){dis[nx][ny]=dis[x][y]+(!i);if(!i) q.push_back(make_pair(nx,ny));else q.push_front(make_pair(nx,ny)); }}}}
}int main(){freopen("in.txt","r",stdin);rd(n),rd(m),rd(r),rd(c),rd(L),rd(R);for(int i=1;i<=n;++i) scanf("%s",mp[i]+1);bfs(make_pair(r,c));for(int i=1;i<=n;++i)for(int j=1;j<=m;++j)if(dis[i][j]<=R&&dis[i][j]+c-j<=L) ++ans;printf("%d",ans);return 0;
}

转载于:https://www.cnblogs.com/lxyyyy/p/11272565.html

【CF1063B】Labyrinth [最短路? 01BFS]相关推荐

  1. CF1063B Labyrinth

    CF1063B Labyrinth 题意: 你正在玩一款电脑游戏.在其中一关,你位于一个 n 行 m 列的迷宫.每个格子要么是可以通过的空地,要么是障碍.迷宫的起点位于第 r 行第 c 列.你每一步可 ...

  2. 图论 ---- C. Nastya and Unexpected Guest(图上最短路dp + 01bfs)

    题目链接 题目大意: 给你一条长度为 n 的马路(可以将马路视为一个数轴),你要从 0 位置开始到达 n 位置,你每秒走 1 个长度单位.在马路上有 m 个安全岛,它们的位置已给定.该马路的绿灯亮 g ...

  3. 【极值问题】【CF1063B】 Labyrinth

    传送门 Description 给你一个\(n~\times~m\)的矩阵,一开始你在第\(r\)行第\(c\)列.你的上下移动不受限制,向左最多移动\(x\)次,向右最多移动\(y\)次.求你最多能 ...

  4. CodeForces - 1341E Nastya and Unexpected Guest(01bfs)

    题目链接:点击查看 题目大意:给出一个区间 [ 0 , n ] ,初始时位于点 0 ,现在需要到达点 n ,问最少需要多长时间 接下来是限制,首先有一个红绿灯,当绿灯亮起的时候,必须保证移动,当红灯亮 ...

  5. 【25.93%】【676D】Theseus and labyrinth

    time limit per test3 seconds memory limit per test256 megabytes inputstandard input outputstandard o ...

  6. [C] [最短路] 只有5行的算法:Floyd-Warshall

    终于学到求最短路了,终于来到我最喜欢的算法--Floyd-Warshall了!今天还有点小激动呢! 我喜欢它,当然是因为它逻辑十分简单咯!真的只有5行诶! Floyd-Warshall算法 题目描述 ...

  7. BZOJ4152 AMPPZ2014 The Captain(最短路)

    事实上每次走到横坐标或纵坐标最接近的点一定可以取得最优方案.于是这样连边跑最短路就可以了. #include<iostream> #include<cstdio> #inclu ...

  8. Codeforces.1051F.The Shortest Statement(最短路Dijkstra)

    题目链接 先随便建一棵树. 如果两个点(u,v)不经过非树边,它们的dis可以直接算. 如果两个点经过非树边呢?即它们一定要经过该边的两个端点,可以直接用这两个点到 u,v 的最短路更新答案. 所以枚 ...

  9. BZOJ1491: [NOI2007]社交网络(Floyd 最短路计数)

    Time Limit: 10 Sec  Memory Limit: 64 MB Submit: 2343  Solved: 1266 [Submit][Status][Discuss] Descrip ...

最新文章

  1. 部署自建CA颁发证书实现https加密
  2. python udp_如何用python方法检测UDP端口
  3. 1.4 为什么深度学习会兴起-深度学习-Stanford吴恩达教授
  4. [转]Ubuntu下ROS开发环境搭建(QT+ros_qtc_plugin)
  5. 清除浏览器某一特定网站的缓存(Microsoft Edge、Chrome等)
  6. 什么是TypeScript的字符串索引签名
  7. iec104点号_QTouch之IEC60870-104通讯
  8. Linux中存储相关的命令,Linux存储管理命令与HAB相关命令
  9. mysql怎么看实例名_南方“中看不中吃”的前4名水果,莲雾只是垫底,你怎么看?...
  10. android同步aar到jcenter,android上传aar到jcenter
  11. how to add user into sudoers file?
  12. 常用类 (二) ----- Math类
  13. python之定义默认参数_035-Python之定义默认参数
  14. 基于matlab指纹识别算法的实现解析
  15. android获取屏幕像素密度DPI,与density
  16. property_get和property_set使用方法
  17. 内核编译(支持查看cpu温度)
  18. 【程序员的自我修养】[动态图文] 超详解函数栈帧
  19. 分化成功的标志及特异性神经递质的检测
  20. ffmpeg对ts流的解析

热门文章

  1. RMAN深入解析之--控制文件
  2. 九 Android基本知识介绍
  3. 《科学+ 预见人工智能》——“工具”本质,理性批判
  4. ASP中时间格式转换
  5. win7系统登录界面出现“其他用户” (登录界面显示多个用户)
  6. String.format() 图文详解,写得非常好!
  7. 通俗易懂,带你了解Kafka
  8. Android 告急!
  9. CSS Modules 用法教程
  10. 33.向vector里面添加数字,换行敲下输入结束