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 ...
随机推荐
- 【SDOI2017】数字表格
题面 题解 这道题目还有一种比较有意思的解法. 定义一种运算\((\mathbf f\oplus\mathbf g)(x) = \prod\limits_{d\mid x}\mathbf f(d)^{ ...
- SERDES关键技术总结
转自https://www.cnblogs.com/liujinggang/p/10125727.html 一.SERDES介绍 随着大数据的兴起以及信息技术的快速发展,数据传输对总线带宽的要求越来越 ...
- [linux] VirtualBox复制虚拟机
环境: Oracle VM VirtualBox 5.0.20 CentOS-6.7-x86_64-minimal.iso 1.复制虚拟机 -->右击休眠状态模板虚拟机,选择复制 -->填 ...
- 小学生四则运算APP核心代码公布
Mainactivity类: package com.example.XXSCYS; import java.io.ByteArrayOutputStream; import java.io.File ...
- .Net反编译软件
.Net反编译软件 https://www.cnblogs.com/xiandnc/p/10132491.html 一说起.net的反编译软件,大家首先想到的就是Reflector,ILSpy,dot ...
- NopCommerce源码架构
我们承接以下nop相关的业务,欢迎联系我们. 我们承接NopCommerce定制个性化开发: Nopcommerce二次开发 Nopcommerce主题开发 基于Nopcommerce的二次开发的电子 ...
- Delphi7通过superobject解析JSON
1.通过delphi程序访问PHP事先写好的webservice(查询功能),webservice返回json格式数据. 2.通过superobject读取json数据 得到效果如下: //深层级的访 ...
- 震旦199打印机扫描A4文件
1.需要扫描的A4文件放入输稿器 2.使用数据线将打印机.电脑连接 3.在电脑中右键打印机,选择扫描功能 4.如下图,选择选项后,点击扫描即可
- Angular 添加路由
var app=angular.module('kaifanla',['ng','ngRoute']);app.config(function($routeProvider){ //添加路由 $rou ...
- HashMap的实现原理--链表散列
1. HashMap概述 HashMap是基于哈希表的Map接口的非同步实现.此实现提供所有可选的映射操作,并允许使用null值和null键.此类不保证映射的顺序,特别是它不保证该顺序恒久不变. ...