P1189 SEARCH—搜索
将这题加进来的原因
因为他的优化令人眼前一新!
↑这一题也要用到标记数组
优化!!!
对于一个位置,
如果他在同样的深度再一次被访问,那他接下来所走的路径,所得到的答案一定与之前相同,就没必要在一次访问了!!!
刚好这题的数据范围又很小。
\(\text{1}\) \(\le\) \(\text{R、C}\) \(\le\) \(\text{50}\)
\(\text{1}\) \(\le\) \(\text{N}\) \(\le\) \(\text{1000}\)
\(\text{1000}\) \(\times\) \(\text{50}\) \(\times\) \(\text{50}\) \(\times\) \(\text{4}\) \(=\) \(\text{1}\) \(\times\) \(10^7\)
\(10^7\) \(\div\) \(\text{8}\) \(\div\) \(\text{1024}\) \(\div\) \(\text{1024}\) \(=\) \(\text{1.}\) ...
完全够用~
所以再开一个\(\text{vis}\)数组
int vis[1005][55][55]
再加判断就ok了。
AC code
#include<iostream>
#include<cstdio>
#include<cmath>
using namespace std;
char a[51][51],ans[51][51];
int way[1005];
bool vis[1005][55][55];//!!!
int R,C,N;
void dfs(int x,int y,int d){
if(vis[d][x][y]==1) return;//!!!
vis[d][x][y]=1;
if(d==N+1){
ans[x][y]='*';
return;
}
if(way[d]==1)
for(int i=1;;i++){
if(x-i<1) break;
if(a[x-i][y]=='X') break;
dfs(x-i,y,d+1);
}
else if(way[d]==2){
for(int i=1;;i++){
if(x+i>R) break;
if(a[x+i][y]=='X') break;
dfs(x+i,y,d+1);
}
}
else if(way[d]==3){
for(int i=1;;i++){
if(y-i<1) break;
if(a[x][y-i]=='X') break;
dfs(x,y-i,d+1);
}
}
else{
for(int i=1;;i++){
if(y+i>C) break;
if(a[x][y+i]=='X') break;
dfs(x,y+i,d+1);
}
}
return;
}
int main(){
int x,y;
scanf("%d%d",&R,&C);
for(int i=1;i<=R;i++){
for(int j=1;j<=C;j++){
cin>>a[i][j];
if(a[i][j]=='*') x=i,y=j;
}
}
for(int i=1;i<=R;i++)
for(int j=1;j<=C;j++) ans[i][j]=a[i][j];
ans[x][y]='.';
scanf("%d",&N);
char s[10];
for(int i=1;i<=N;i++){
cin>>s;
if(s[0]=='N') way[i]=1;
if(s[0]=='S') way[i]=2;
if(s[0]=='W') way[i]=3;
if(s[0]=='E') way[i]=4;
}
dfs(x,y,1);
for(int i=1;i<=R;i++){
for(int j=1;j<=C;j++)
cout<<ans[i][j];
cout<<endl;
}
return 0;
}
summary
搜索的时候,如果发现对于一种状态,他之后的变化都相同,就可以进行标记,以防重复。
\(\text{END.}\)
\(\text{2022.5.8}\)
\(\text{2022.5.14}\)
今天又遇到了一道类似的题
P1746 离开中山路,用这种优化,遍历全图轻轻松松AC(●'◡'●)
P1189 SEARCH—搜索的更多相关文章
- 随笔之——各大热门网站search 搜索框的写法,浅析!
随笔之——各大热门网站search 搜索框的写法,浅析! 关于搜索框,写法有很多种,搜索框这一块是一个比较细的活,要先计算好他的高.宽: 下面我就以京东搜索框为例,给大家浅析一下. 上面就是最终s ...
- 【起航计划 032】2015 起航计划 Android APIDemo的魔鬼步伐 31 App->Search->Invoke Search 搜索功能 Search Dialog SearchView SearchRecentSuggestions
Search (搜索)是Android平台的一个核心功能之一,用户可以在手机搜索在线的或是本地的信息.Android平台为所有需要提供搜索或是查询功能的应用提 供了一个统一的Search Framew ...
- P1189 SEARCH(逃跑的拉尔夫)
P1189 SEARCH 题目描述 年轻的拉尔夫开玩笑地从一个小镇上偷走了一辆车,但他没想到的是那辆车属于警察局,并且车上装有用于发射车子移动路线的装置. 那个装置太旧了,以至于只能发射关于那辆车的移 ...
- django的前后的结合,search搜索功能案例
利用django的Q()功能可以很好的展开搜索功能 假设我要做个这样的搜索功能
- 使用apt-cache search搜索想要的软件包
环境: Ubuntu14.10 我在编译u-boot代码的时候遇到了如下问题: LD test/dm/built-in.o CC examples/standalone/stubs.o LD exam ...
- 题解 P1189 SEARCH
(传送门)[https://www.luogu.org/problemnew/show/P1189] 先反省一波:我以后再也不用getchar()+scanf了(日常爆零) 算是比较裸的搜索吧,在下用 ...
- Odoo search 搜索视图详解与搜索视图工作原理
转载请注明原文地址:https://www.cnblogs.com/ygj0930/p/10826430.html 搜索视图 搜索视图的search标签本身没什么属性可以使用,只要是<searc ...
- 洛谷P1189 SEARCH 题解 迭代加深
题目链接:https://www.luogu.com.cn/problem/P1189 题目大意: 给你一个 \(n \times m\) 的矩阵,其中有一些格子可以走,一些各自不能走,然后有一个点是 ...
- Sentry 监控 - Search 搜索查询实战
系列 1 分钟快速使用 Docker 上手最新版 Sentry-CLI - 创建版本 快速使用 Docker 上手 Sentry-CLI - 30 秒上手 Source Maps Sentry For ...
随机推荐
- XCTF练习题---MISC---2017_Dating_in_Singapore
XCTF练习题---MISC---2017_Dating_in_Singapore flag:HITB{CTFFUN} 解题步骤: 1.观察题目,下载附件 2.打开附件后发现是一张日历,还是新加坡的, ...
- [AcWing 2816] 判断子序列
点击查看代码 #include<iostream> using namespace std; const int N = 1e5 + 10; int a[N], b[N]; int mai ...
- 一文读懂 Kubernetes 容器网络
点击上方"开源Linux",选择"设为星标" 回复"学习"获取独家整理的学习资料! 在Kubernetes中要保证容器之间网络互通,网络至关 ...
- EdgeFormer: 向视觉 Transformer 学习,构建一个比 MobileViT 更好更快的卷积网络
前言 本文主要探究了轻量模型的设计.通过使用 Vision Transformer 的优势来改进卷积网络,从而获得更好的性能. 欢迎关注公众号CV技术指南,专注于计算机视觉的技术总结.最新技术跟 ...
- 聊聊 HTTPS
聊聊 HTTPS 本文写于 2021 年 6 月 30 日 最近工作也是越来越忙了,不像上学的时候,一天下来闲着没事可以写两篇博客. 今天来聊一下 HTTPS. HTTP HTTP 是不安全的协议. ...
- 用js给闺女做了一个加减乘除的html
下班回家用二十分钟给闺女做了一个加减乘除的页面,顺便记录下代码,时间仓促,后期再来修改吧 目录结构 -yq --menu.html --yq.html --yq50.html --yq70.html ...
- 透过实例demo带你认识gRPC
摘要:gRPC是基于定义一个服务,指定一个可以远程调用的带有参数和返回类型的的方法.在服务端,服务实现这个接口并且运行gRPC服务处理客户端调用. 本文分享自华为云社区<gRPC介绍以及spri ...
- iOS全埋点解决方案-数据存储
前言 SDK 需要把事件数据缓冲到本地,待符合一定策略再去同步数据. 一.数据存储策略 在 iOS 应用程序中,从 "数据缓冲在哪里" 这个纬度看,缓冲一般分两种类型. 内 ...
- awk-文本处理【中文手册版】
01. 简介 AWK是一个文本(面向行和列)处理工具,同时它也是一门脚本语言. AWK其名称得自于它的创始人 Alfred Aho .Peter Weinberger 和 Brian Kernigha ...
- 第06组Alpha冲刺(3/6)
目录 1.1 基本情况 1.2 冲刺概况汇报 1.郝雷明 2.鲍凌函 3.曾丽莉 4. 曹兰英 5. 方梓涵 6.董翔云 7.杜筱 8.黄少丹 9. 詹鑫冰 10.吴沅静 1.3 冲刺成果展示 1.1 ...