cf1063B Labyrinth (bfs)
可以证明,如果我搜索的话,一个点最多只有两个最优状态:向左剩余步数最大时和向右剩余步数最大时
然后判一判,bfs就好了
dfs会T惨...
- #include<bits/stdc++.h>
- #define pa pair<int,int>
- #define CLR(a,x) memset(a,x,sizeof(a))
- using namespace std;
- typedef long long ll;
- const int maxn=+;
- inline ll rd(){
- ll x=;char c=getchar();int neg=;
- while(c<''||c>''){if(c=='-') neg=-;c=getchar();}
- while(c>=''&&c<='') x=x*+c-'',c=getchar();
- return x*neg;
- }
- struct Node{
- int x,y,l,r;
- Node(int a=,int b=,int c=,int d=){
- x=a,y=b,l=c,r=d;
- }
- };
- bool mp[maxn][maxn],vis[maxn][maxn];
- int N,M,X,Y,L,R;
- int ml[maxn][maxn][],mr[maxn][maxn][],ans;
- char s[maxn];
- queue<Node> q;
- void bfs(){
- q.push(Node(X,Y,L,R));
- while(!q.empty()){
- Node p=q.front();q.pop();
- int l=p.l,r=p.r,x=p.x,y=p.y;
- if(l<||r<) continue;
- if(x<=||y<=||x>N||y>M) continue;
- if(!mp[x][y]) continue;
- 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;
- if(!vis[x][y]) vis[x][y]=,ans++;
- if(l>=ml[x][y][]) ml[x][y][]=l,ml[x][y][]=r;
- if(r>=mr[x][y][]) mr[x][y][]=l,mr[x][y][]=r;
- q.push(Node(x,y+,l,r-));q.push(Node(x,y-,l-,r));
- q.push(Node(x+,y,l,r));q.push(Node(x-,y,l,r));
- }
- }
- int main(){
- //freopen(".in","r",stdin);
- int i,j,k;
- N=rd(),M=rd();
- X=rd(),Y=rd();
- L=rd(),R=rd();
- CLR(ml,-);CLR(mr,-);
- for(i=;i<=N;i++){
- scanf("%s",s+);
- for(j=;j<=M;j++){
- mp[i][j]=(s[j]=='.');
- }
- }
- bfs();
- printf("%d\n",ans);
- return ;
- }
cf1063B Labyrinth (bfs)的更多相关文章
- timus 1033 Labyrinth(BFS)
Labyrinth Time limit: 1.0 secondMemory limit: 64 MB Administration of the labyrinth has decided to s ...
- 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 ...
- Codeforces Round #516 (Div. 2)D. Labyrinth(BFS)
题目链接:http://codeforces.com/contest/1064/problem/D 题目大意:给你一个n*m的图,图中包含两种符号,'.'表示可以行走,'*'表示障碍物不能行走,规定最 ...
- CF1063B Labyrinth
大家一起膜Rorshach. 一般的$bfs$会造成有一些点访问不到的情况,在$system\ test$的时候会$WA40$(比如我……). 发现这张地图其实是一个边权只有$0/1$的图,我们需要计 ...
- codeforces 676D Theseus and labyrinth BFS搜索
分析:一个n*m的矩阵,每个格子有12个状态,每次按一次,每个格子转90度,所以整个矩阵只有4种状态,然后爆搜就好了 #include <cstdio> #include <iost ...
- $CF1063B\ Labyrinth$ $01$最短路/$01BFS$
\(Des\) 有一个网格图,上面的格子分为空地和障碍,障碍是不可以走的.现在从给定的起点出发开始到处乱走,最多可以往左走\(l\)次,往右走\(r\)次.求可能到达的点数. \(Sol\) 如果只限 ...
- Codeforces Round #516 (Div. 2) (A~E)
目录 Codeforces 1064 A.Make a triangle! B.Equations of Mathematical Magic C.Oh Those Palindromes D.Lab ...
- 题解 CF1063B 【Labyrinth】
题解 CF1063B [Labyrinth] 完了我发现我做CF的题大部分思路都和别人不一样qwq 这道题其实很水,不至于到紫题 我们只要bfs一下,向四个方向剪下枝,就A了(好像还跑的蛮快?) 是一 ...
- poj 1383 Labyrinth【迷宫bfs+树的直径】
Labyrinth Time Limit: 2000MS Memory Limit: 32768K Total Submissions: 4004 Accepted: 1504 Descrip ...
随机推荐
- Python从菜鸟到高手(1):初识Python
1 Python简介 1.1 什么是Python Python是一种面向对象的解释型计算机程序设计语言,由荷兰人吉多·范罗苏姆(Guido van Rossum)于1989年发明,第一个公开发行版 ...
- Linux磁盘空间被占用问题 (分区目录占用空间比实际空间要大: 资源文件删除后, 空间没有真正释放)
问题说明:IDC里的一台服务器的/分区使用率爆满了!已达到100%!经查看发现有个文件过大(80G),于是在跟有关同事确认后rm -f果断删除该文件.但是发现删除该文件后,/分区的磁盘空间压根没有释放 ...
- Spring RPC 入门学习(3)-插入Student对象
Spring RPC 向后台传递对象 1. 新建RPC接口:StudentInterface.java package com.cvicse.ump.rpc.interfaceDefine; impo ...
- Python-元组-10
元祖 Why:对于容器型数据类型list,无论谁都可以对其增删改查,那么有一些重要的数据放在list中是不安全的,所以需要一种容器类的数据类型存放重要的数据,创建之初只能查看而不能增删改,这种数据类型 ...
- 牛客国庆集训派对Day6 B.Board
链接 [https://www.nowcoder.com/acm/contest/206/B] 分析 只要在n*n范围内随便找一个斜对角的一个格子去计算就知道了 具体看代码体会吧 代码 #includ ...
- visual studio 2013的使用和单元测试
Visual Studio 2013 是一个先进的开发解决方案,各种规模的团队通过它均可设计和创建引人注目的应用程序.Visual Studio 13在新功能包括C#和VB编译器和IDE支持完全基于. ...
- android开发之图表
在这里使用的插件为Mpchart,只以折线图为例.首先需要导入
- HDU 2012 素数判定
http://acm.hdu.edu.cn/showproblem.php?pid=2012 Problem Description 对于表达式n^2+n+41,当n在(x,y)范围内取整数值时(包括 ...
- 安装wamp提示You dont't have permission to accesson on this server的解决方案
展示一下安装好的效果图 首先找到安装目录下的路径[wamp\bin\apache\Apache2.2.21\conf\] § 找到httpd.conf,用记事本打开httpd.conf,然后将 1. ...
- Laravel route ---- resoure
Laravel 路由--资源路由 Route::resource('blog', 'BlogController'); 上面代码将等同于: Route::get('/blog', 'BlogContr ...