一、题目

点此看题

二、解法

考察搜索的优化,我们把访问标记设置成每个位置是从哪个方向来的,而不能直接标记,这是为了使 k k k那部分的移动是连续的(一旦访问过就不用再做了,这样每个位置只能被访问一次),考虑下图:

如此图,他们在 b f s bfs bfs的同一层,假设红先访问并标记,如果我们的标记不考虑方向那么就不满足上述的性质。

#include <cstdio>
#include <queue>
using namespace std;
const int M = 1005;
int read()
{int x=0,f=1;char c;while((c=getchar())<'0' || c>'9') {if(c=='-') f=-1;}while(c>='0' && c<='9') {x=(x<<3)+(x<<1)+(c^48);c=getchar();}return x*f;
}
int n,m,k,sx,sy,tox,toy,dx[4]={1,-1},dy[4]={0,0,1,-1};
char a[M][M];bool vis[M][M][4];
struct node
{int x,y,d;
};
void bfs()
{queue<node> q;vis[sx][sy][0]=vis[sx][sy][1]=vis[sx][sy][2]=vis[sx][sy][2]=1;q.push(node{sx,sy,0});while(!q.empty()){node t=q.front();q.pop();if(t.x==tox && t.y==toy){printf("%d\n",t.d);return ;}for(int i=0;i<=3;i++)for(int j=1;j<=k;j++){int tx=t.x+dx[i]*j,ty=t.y+dy[i]*j;if(tx<1 || tx>n || ty<1 || ty>m) break;if(a[tx][ty]=='#' || vis[tx][ty][i]) break;vis[tx][ty][i]=1;q.push(node{tx,ty,t.d+1}); }}puts("-1");
}
signed main()
{n=read();m=read();k=read();for(int i=1;i<=n;i++)scanf("%s",a[i]+1);sx=read();sy=read();tox=read();toy=read();bfs();
}

CF877D Olya and Energy Drinks相关推荐

  1. cf 877D Olya and Energy Drinks

    一 原题 D. Olya and Energy Drinks time limit per test 2 seconds memory limit per test 256 megabytes inp ...

  2. Codeforces 题目合集+分类+代码 【Updating...】【361 in total】

    961A - Tetris                                                模拟                                      ...

  3. 使用现代C++如何避免bugs(下)

    使用现代C++如何避免bugs(下) About virtual functionsVirtual functions hinder a potential problem: the thing is ...

  4. python编程书籍1020python编程书籍_代写INFT 1020作业、Database作业代做、Java课程作业代写、c++,Python编程作业代做...

    代写INFT 1020作业.Database作业代做.Java课程作业代写.c++,Python编程作业代做 日期:2020-04-25 10:27 INFT 1020 Database Fundam ...

  5. 姜黄的毒副作用调研汇总(调研手稿一)

    [1] 姜黄会「伤肝」 早在 10 多年前,日本肝脏学会就开展了对各种民间药物及健康食品所诱发的「药物性肝功能损害」的调查. 所谓药物性肝损害,顾名思义就是服用药物或含有药物成分的食物导致的肝脏损害. ...

  6. 中关村程序员的 996 强制加班与工作效率成正比吗?

    点击上方"CSDN",选择"置顶公众号" 关键时刻,第一时间送达! 本文作者为 CSDN 博客专家「博览群书1989」,原文:https://blog.csdn ...

  7. 塔望 · 食界人物|中国功能饮料A股第一股东鹏饮料创始人林木勤

    关注行业,更要关注行业发展背后的人.关注企业,更要关注企业的人格化身--"企业家".人类在任何领域的创新和进步,都离不开企业家精神.优秀的企业家和企业家精神,是经济社会发展的重要推 ...

  8. 中关村程序员的996强制加班与工作效率

    点击上方"程序人生",选择"置顶公众号" 第一时间关注程序猿(媛)身边的故事 图片源自网络 作者 博览群书1989 CSDN博客 https://blog.cs ...

  9. 学会数据库后学什么_用数据分析了一年的生活后学到的东西

    学会数据库后学什么 by Rishal Hurbans 由Rishal Hurbans 用数据分析了一年的生活后学到的东西 (What I learned after analyzing my lif ...

最新文章

  1. 解决iframe 右边有空白的问题
  2. 彻底理解kafka中partition和消费者对应关系
  3. python可以干嘛知乎-一行Python代码能做什么?
  4. DWZ 验证 CLASS 规则
  5. MySQL - 库表设计之IP和TIMESTAMP的处理
  6. HD 1213 How Many Tables(裸 并查集)
  7. 狂神说mysql笔记_Mybatis学习笔记(狂神说)
  8. mysql删除记录后id不连续_Mysql数据库中使用DELETE语句时,一般删除一条记录后ID会不连续,才能让序号继续按顺序排列?...
  9. 【毕业设计】jsp+sql毕业选题系统(论文)
  10. linux 汇编 读取软盘,读取软盘逻辑扇区的汇编实现代码
  11. 回顾 | Apache Flink Meetup 杭州站圆满结束(附PPT下载)
  12. p39最大子数组问题o(lgn)
  13. 多线程与并发系列之CompletableFuture
  14. Python统计学01——数据可视化
  15. TeamTalk 详细介绍
  16. arcgis的python安装包_用Python使用arcgis中站点包arcpy
  17. WSTMART电商开源版安装教程-徐新帅-专题视频课程
  18. windows 下如何让一个窗口置顶?
  19. 2017年10月 oracle 关键补丁更新
  20. [Node] Node.js Webpack和打包过程

热门文章

  1. ChinaJoy“美”不胜收之外的一些个人记录-工具篇SoftImage
  2. war3 1.27完成
  3. 中国农产品物流行业消费状况与十四五运行形势分析报告2022版
  4. 以太坊智能合约中随机数预测
  5. nLite 制作精简版合集光盘常见问题
  6. C++编程实现多显示器控制(复制、横屏、纵屏,显示器个数)等
  7. 关于ASL(平均查找长度)的简单总结
  8. 3个赚钱思路和案例,都是暴利赚钱项目,最后一个你肯定见到过
  9. 深度学习基础入门篇[五]:交叉熵损失函数、MSE、CTC损失适用于字识别语音等序列问题、Balanced L1 Loss适用于目标检测
  10. FPGA基础入门【3】Blink逻辑及仿真