2020牛客寒假算法基础集训营5 G.街机争霸 (bfs)
https://ac.nowcoder.com/acm/problem/201961
预处理出僵尸走的路径,僵尸走的周期长度应该为2k-2,在普通的bfs基础上加上一维表示时间,从当前位置x,y和和时间t去更新新的x,y和时间t+1,vis数组也是三维的,等于多一层状态进行表示dis数组,把每个状态加入队列,直到到达终点或者队列为空,即可求出最佳答案。
#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
struct node{
int x,y,t;
};
int dx[] = {,,-,};
int dy[] = {-,,,};
int vis[][][];
int dis[][][];
char mp[][][];
int n,m,p,k,sx,sy,ex,ey;
void init(){
for(int i = ;i<p;i++){
int x,y;string s;
cin>>x>>y;
cin>>s;
if(s[] == 'R'){
for(int i = ;i<k;i++){
mp[x][y+i][i] = '*';
}
int yy = y + k - ;
for(int i = ;i<k;i++){
mp[x][yy-i][k+i-] = '*';
}
}
if(s[] == 'L'){
for(int i = ;i<k;i++){
mp[x][y-i][i] = '*';
}
int yy = y - k + ;
for(int i = ;i<k;i++){
mp[x][yy+i][k+i-] = '*';
}
}
if(s[] == 'U'){
for(int i = ;i<k;i++){
mp[x-i][y][i] = '*';
}
int xx = x - k + ;
for(int i = ;i<k;i++){
mp[xx+i][y][k+i-] = '*';
}
}
if(s[] == 'D'){
for(int i = ;i<k;i++){
mp[x+i][y][i] = '*';
}
int xx = x + k - ;
for(int i = ;i<k;i++){
mp[xx-i][y][k+i-] = '*';
}
}
}
}
int bfs(){
queue<node> q;
q.push({sx,sy,});
while(!q.empty()){
node cur = q.front();
q.pop();
int tx = cur.x ,ty = cur.y ,t = cur.t;
if(tx == ex && ty == ey) return t;
for(int i = ;i<;i++){
int xx = tx+dx[i],yy = ty + dy[i],zz = (t+)%(*k-);
if(vis[xx][yy][zz]) continue;
if(xx>=&&xx<=n&&yy>=&&yy<=m&&mp[xx][yy][]!='&'&&mp[xx][yy][zz]!='*'){
vis[xx][yy][zz] = ;
q.push({xx,yy,t+});
}
}
}
return -;
}
int main(){
cin>>n>>m>>p>>k;
for(int i = ;i<=n;i++) {
string s;cin>>s;
for(int j = ;j<=m;j++){
mp[i][j][] = s[j-];
if(mp[i][j][] == 'L') sx = i,sy = j,vis[i][j][] = ;
if(mp[i][j][] == 'A') ex = i,ey = j;
}
}
init();
int ans = bfs();
if(ans == -) cout<<"Oh no";
else cout<<ans;
return ;
}
2020牛客寒假算法基础集训营5 G.街机争霸 (bfs)的更多相关文章
- 2020牛客寒假算法基础集训营5 G街机争霸
题目描述 哎,又是银首,要是你这个签到题少WA一发就金了 牛牛战队的队员打完比赛以后又到了日常甩锅的时间.他们心情悲伤,吃完晚饭以后,大家相约到一个街机厅去solo.牛牛和牛能进入了一个迷宫,这个迷宫 ...
- 2020牛客寒假算法基础集训营4 G音乐鉴赏
题目描述 作为“音乐鉴赏”课的任课老师,你的课程作为刷学分好课一直受到广泛欢迎.但这一学期,学校制定了新的标准,你的课的优秀率(分数超过90分的人数)被限制在10%以下! 为了应对这个调整,你要求所有 ...
- 2020牛客寒假算法基础集训营3 G.牛牛的Link Power II (树状数组维护前缀和)
https://ac.nowcoder.com/acm/contest/3004/G 发现每个“1”对于它本身位置产生的影响贡献为0,对前面的“1”有产生贡献,对后面的"1"也产生 ...
- 2020牛客寒假算法基础集训营3 - G. 牛牛的Link Power II(线段树)
题目链接:牛牛的Link Power II 题意:给你一个只含$0$和$1$的串,定义串的$Link$值为串中两个的$1$之间的距离的和,$(u,v)$和$(v,u)$被看认为是同一对,有$m$次操作 ...
- 2020牛客寒假算法基础集训营2 J题可以回顾回顾
2020牛客寒假算法基础集训营2 A.做游戏 这是个签到题. #include <cstdio> #include <cstdlib> #include <cstring ...
- 2020牛客寒假算法基础集训营1 J题可以回顾回顾
2020牛客寒假算法基础集训营1 这套题整体来说还是很简单的. A.honoka和格点三角形 这个题目不是很难,不过要考虑周全,面积是1,那么底边的长度可以是1也可以是2, 注意底边1和2会有重复的, ...
- 2020牛客寒假算法基础集训营4-F树上博弈
链接:https://ac.nowcoder.com/acm/contest/3005/F来源:牛客网 题目描述 现有一个 n 个点,n-1条边组成的树,其中 1 号点为根节点. 牛牛和牛妹在树上玩游 ...
- 2020牛客寒假算法基础集训营4-I 匹配星星【贪心】
链接:https://ac.nowcoder.com/acm/contest/3005/I来源:牛客网 示例1 输入 复制 2 1 1 0 2 2 1 2 1 1 0 2 2 1 输出 复制 1 1 ...
- 2020牛客寒假算法基础集训营1 F-maki和tree
链接:https://ac.nowcoder.com/acm/contest/3002/F来源:牛客网 时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 262144K,其他语言5242 ...
随机推荐
- Mac下升级ruby至最新版本
Mac自身的ruby 版本 2.x,通过ruby -v可以查看版本号. 为更新到ruby的最新版本,可通过以下命令解决: brew update brew install ruby 执行完命令后,ru ...
- vue移动端下拉刷新、上拉加载
由于自身的项目比较简单,只有几个H5页面,用来嵌入app中,所有没有引入移动端的UI框架,但是介于能让用户在浏览H5页面时有下拉刷新和上拉加载,有更好的用户体验,自己写组件实现. 1.下拉刷新Drop ...
- HTML块级、行级元素,特殊字符,嵌套规则
如果介绍HTML网页基本标签的嵌套规则,首先要说的就是元素的分类.元素可以划分为块级元素和行级元素,块级元素是什么?它可以独占一行,可以设置宽高度,默认是100%:行级元素与之相反,它的内容决定它的宽 ...
- KVM | centos 安装 window 虚拟机
KVM | centos 安装 window 虚拟机 环境: CENTOS 7.3 1. 准备 1.1 检查是否支持虚拟化 cat /proc/cpuinfo | egrep 'vmx|svm' 要求 ...
- 《手把手教你构建自己的 Linux 系统》学习笔记(6)
目录 /dev 目录是干什么的? /proc 和 /sys 目录是干什么的? udev 这个软件是干什么用的? 目录映射是临时性的,还是永久性的? 命令行里大括号 "{}" 的作用 ...
- 首次使用Lambda表达式-sunziren
需要将List<Apple> list = new ArrayList<Apple>(); 按照Apple对象中的price属性从大到小排序. 第一个念头闪过的是冒泡排序,转念 ...
- opencv —— boxFilter、blur、GaussianBlur、medianBlur、bilateralFilter 线性滤波(方框滤波、均值滤波、高斯滤波)与非线性滤波(中值滤波、双边滤波)
图像滤波,指在尽量保留图像细节特征的条件下对目标图像的噪声进行抑制,是图像与处理中不可缺少的操作. 邻域算子,指利用给定像素及其周围的像素值,决定此像素的最终输出值的一种算子.线性邻域滤波器就是一种常 ...
- maven的核心概念——仓库
第十章仓库 10.1 分类 [1]本地仓库:为当前本机电脑上的所有Maven工程服务. [2]远程仓库 (1)私服:架设在当前局域网环境下,为当前局域网范围内的所有Maven工程服务. (2)中央仓库 ...
- MVC的App_Data中看不到数据库mdf文件
点击运行后的页面去注册个账号,然后点击解决方案的‘显示所有文件就能看到了
- 【感知机模型】手写代码训练 / 使用sklearn的Perceptron模块训练
读取原始数据 import pandas as pd import numpy as np in_data = pd.read_table('./origin-data/perceptron_15.d ...