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

然后判一判,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. Python从菜鸟到高手(1):初识Python

    1 Python简介 1.1 什么是Python   Python是一种面向对象的解释型计算机程序设计语言,由荷兰人吉多·范罗苏姆(Guido van Rossum)于1989年发明,第一个公开发行版 ...

  2. Linux磁盘空间被占用问题 (分区目录占用空间比实际空间要大: 资源文件删除后, 空间没有真正释放)

    问题说明:IDC里的一台服务器的/分区使用率爆满了!已达到100%!经查看发现有个文件过大(80G),于是在跟有关同事确认后rm -f果断删除该文件.但是发现删除该文件后,/分区的磁盘空间压根没有释放 ...

  3. Spring RPC 入门学习(3)-插入Student对象

    Spring RPC 向后台传递对象 1. 新建RPC接口:StudentInterface.java package com.cvicse.ump.rpc.interfaceDefine; impo ...

  4. Python-元组-10

    元祖 Why:对于容器型数据类型list,无论谁都可以对其增删改查,那么有一些重要的数据放在list中是不安全的,所以需要一种容器类的数据类型存放重要的数据,创建之初只能查看而不能增删改,这种数据类型 ...

  5. 牛客国庆集训派对Day6 B.Board

    链接 [https://www.nowcoder.com/acm/contest/206/B] 分析 只要在n*n范围内随便找一个斜对角的一个格子去计算就知道了 具体看代码体会吧 代码 #includ ...

  6. visual studio 2013的使用和单元测试

    Visual Studio 2013 是一个先进的开发解决方案,各种规模的团队通过它均可设计和创建引人注目的应用程序.Visual Studio 13在新功能包括C#和VB编译器和IDE支持完全基于. ...

  7. android开发之图表

    在这里使用的插件为Mpchart,只以折线图为例.首先需要导入

  8. HDU 2012 素数判定

    http://acm.hdu.edu.cn/showproblem.php?pid=2012 Problem Description 对于表达式n^2+n+41,当n在(x,y)范围内取整数值时(包括 ...

  9. 安装wamp提示You dont't have permission to accesson on this server的解决方案

    展示一下安装好的效果图 首先找到安装目录下的路径[wamp\bin\apache\Apache2.2.21\conf\] § 找到httpd.conf,用记事本打开httpd.conf,然后将 1. ...

  10. Laravel route ---- resoure

    Laravel 路由--资源路由 Route::resource('blog', 'BlogController'); 上面代码将等同于: Route::get('/blog', 'BlogContr ...