可以证明,如果我搜索的话,一个点最多只有两个最优状态:向左剩余步数最大时和向右剩余步数最大时

然后判一判,bfs就好了

dfs会T惨...

  1. #include<bits/stdc++.h>
  2. #define pa pair<int,int>
  3. #define CLR(a,x) memset(a,x,sizeof(a))
  4. using namespace std;
  5. typedef long long ll;
  6. const int maxn=+;
  7.  
  8. inline ll rd(){
  9. ll x=;char c=getchar();int neg=;
  10. while(c<''||c>''){if(c=='-') neg=-;c=getchar();}
  11. while(c>=''&&c<='') x=x*+c-'',c=getchar();
  12. return x*neg;
  13. }
  14.  
  15. struct Node{
  16. int x,y,l,r;
  17. Node(int a=,int b=,int c=,int d=){
  18. x=a,y=b,l=c,r=d;
  19. }
  20. };
  21. bool mp[maxn][maxn],vis[maxn][maxn];
  22. int N,M,X,Y,L,R;
  23. int ml[maxn][maxn][],mr[maxn][maxn][],ans;
  24. char s[maxn];
  25. queue<Node> q;
  26.  
  27. void bfs(){
  28. q.push(Node(X,Y,L,R));
  29. while(!q.empty()){
  30. Node p=q.front();q.pop();
  31. int l=p.l,r=p.r,x=p.x,y=p.y;
  32. if(l<||r<) continue;
  33. if(x<=||y<=||x>N||y>M) continue;
  34. if(!mp[x][y]) continue;
  35. if((l<ml[x][y][]||(l==ml[x][y][]&&r<=ml[x][y][]))&&(r<mr[x][y][]||(r==mr[x][y][]&&l<=mr[x][y][]))) continue;
  36. if(!vis[x][y]) vis[x][y]=,ans++;
  37. if(l>=ml[x][y][]) ml[x][y][]=l,ml[x][y][]=r;
  38. if(r>=mr[x][y][]) mr[x][y][]=l,mr[x][y][]=r;
  39. q.push(Node(x,y+,l,r-));q.push(Node(x,y-,l-,r));
  40. q.push(Node(x+,y,l,r));q.push(Node(x-,y,l,r));
  41. }
  42. }
  43.  
  44. int main(){
  45. //freopen(".in","r",stdin);
  46. int i,j,k;
  47. N=rd(),M=rd();
  48. X=rd(),Y=rd();
  49. L=rd(),R=rd();
  50. CLR(ml,-);CLR(mr,-);
  51. for(i=;i<=N;i++){
  52. scanf("%s",s+);
  53. for(j=;j<=M;j++){
  54. mp[i][j]=(s[j]=='.');
  55. }
  56. }
  57. bfs();
  58. printf("%d\n",ans);
  59. return ;
  60. }

cf1063B Labyrinth (bfs)的更多相关文章

  1. timus 1033 Labyrinth(BFS)

    Labyrinth Time limit: 1.0 secondMemory limit: 64 MB Administration of the labyrinth has decided to s ...

  2. Codeforces Round #354 (Div. 2) D. Theseus and labyrinth bfs

    D. Theseus and labyrinth 题目连接: http://www.codeforces.com/contest/676/problem/D Description Theseus h ...

  3. Codeforces Round #516 (Div. 2)D. Labyrinth(BFS)

    题目链接:http://codeforces.com/contest/1064/problem/D 题目大意:给你一个n*m的图,图中包含两种符号,'.'表示可以行走,'*'表示障碍物不能行走,规定最 ...

  4. CF1063B Labyrinth

    大家一起膜Rorshach. 一般的$bfs$会造成有一些点访问不到的情况,在$system\ test$的时候会$WA40$(比如我……). 发现这张地图其实是一个边权只有$0/1$的图,我们需要计 ...

  5. codeforces 676D Theseus and labyrinth BFS搜索

    分析:一个n*m的矩阵,每个格子有12个状态,每次按一次,每个格子转90度,所以整个矩阵只有4种状态,然后爆搜就好了 #include <cstdio> #include <iost ...

  6. $CF1063B\ Labyrinth$ $01$最短路/$01BFS$

    \(Des\) 有一个网格图,上面的格子分为空地和障碍,障碍是不可以走的.现在从给定的起点出发开始到处乱走,最多可以往左走\(l\)次,往右走\(r\)次.求可能到达的点数. \(Sol\) 如果只限 ...

  7. Codeforces Round #516 (Div. 2) (A~E)

    目录 Codeforces 1064 A.Make a triangle! B.Equations of Mathematical Magic C.Oh Those Palindromes D.Lab ...

  8. 题解 CF1063B 【Labyrinth】

    题解 CF1063B [Labyrinth] 完了我发现我做CF的题大部分思路都和别人不一样qwq 这道题其实很水,不至于到紫题 我们只要bfs一下,向四个方向剪下枝,就A了(好像还跑的蛮快?) 是一 ...

  9. poj 1383 Labyrinth【迷宫bfs+树的直径】

    Labyrinth Time Limit: 2000MS   Memory Limit: 32768K Total Submissions: 4004   Accepted: 1504 Descrip ...

随机推荐

  1. Auto-ML之自动化特征工程

    1. 引言 个人以为,机器学习是朝着更高的易用性.更低的技术门槛.更敏捷的开发成本的方向去发展,且Auto-ML或者Auto-DL的发展无疑是最好的证明.因此花费一些时间学习了解了Auto-ML领域的 ...

  2. 微信小程序:java后台获取openId

    一.功能描述 openId是某个微信账户对应某个小程序或者公众号的唯一标识,但openId必须经过后台解密才能获取(之前实现过前台解密,可是由于微信小程序的种种限制,前台解密无法在小程序发布后使用) ...

  3. docker部署rabbitMQ

    获取rabbit镜像: docker pull rabbitmq:management 创建并运行容器: docker run -d --hostname my-rabbit --name rabbi ...

  4. 《DISTRIBUTED SYSTEMS Concepts and Design》读书笔记 一

    第二章 系统模型 描述分布式系统的三种模型 Physical models : 用机器,网络,硬件等语言去描述整个系统. Architectural models : 用计算.计算任务.计算单元等语言 ...

  5. WordPress更新提示无法创建目录的解决方案

    上一篇我们说到无法连接FTP服务器,我们已经完美的解决了,然后...发现...还是无法更新,啥情况??? 提示为无法创建目录 原因是执行更新程序的是www用户, 解决方案如下: 需要把插件或主程序下载 ...

  6. 分布式监控系统Zabbix-3.0.3-完整安装记录 - 添加shell脚本监控

    对公司的jira访问状态进行监控,当访问状态返回值是200的时候,脚本执行结果为1:其他访问状态返回值,脚本执行结果是0.然后将该脚本放在zabbix进行监控,当非200状态时发出报警.jira访问状 ...

  7. 《Linux内核分析》第八周学习小结 进程的切换和系统的一般执行过程

    进程的切换和系统的一般执行过程 一.进程调度的三个时机: 1.中断处理过程(包括时钟中断.I/O中断.系统调用和异常)中,直接调用schedule(),或者返回用户态时根据need_resched标记 ...

  8. 思甜雅---关于qq的NABCD的模型分析

    个人连接:http://www.cnblogs.com/xiaoliulang/ 关于QQ的NABCD模型 N--Need 随着电脑的普及,人们在网络上进行交流的时间越来越多,由于现有的交流工具还不是 ...

  9. gitbub感想

    Git 是 Linux 的创始人 Linus Torvalds 开发的开源和免费的版本管理系统,利用底层文件系统原理进行版本控制的工具.Git是目前为止最著名运用最好最受欢迎的分布式的配置管理工具. ...

  10. opencv学习笔记(四)

    ROI---设定感兴趣的区域(region of interest) 定义: Mat imageROI; //方法一:通过Rect指定矩形区域 imageROI=image(Rect(500,250, ...