CF877D Olya and Energy Drinks
一、题目
点此看题
二、解法
考察搜索的优化,我们把访问标记设置成每个位置是从哪个方向来的,而不能直接标记,这是为了使 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相关推荐
- cf 877D Olya and Energy Drinks
一 原题 D. Olya and Energy Drinks time limit per test 2 seconds memory limit per test 256 megabytes inp ...
- Codeforces 题目合集+分类+代码 【Updating...】【361 in total】
961A - Tetris 模拟 ...
- 使用现代C++如何避免bugs(下)
使用现代C++如何避免bugs(下) About virtual functionsVirtual functions hinder a potential problem: the thing is ...
- python编程书籍1020python编程书籍_代写INFT 1020作业、Database作业代做、Java课程作业代写、c++,Python编程作业代做...
代写INFT 1020作业.Database作业代做.Java课程作业代写.c++,Python编程作业代做 日期:2020-04-25 10:27 INFT 1020 Database Fundam ...
- 姜黄的毒副作用调研汇总(调研手稿一)
[1] 姜黄会「伤肝」 早在 10 多年前,日本肝脏学会就开展了对各种民间药物及健康食品所诱发的「药物性肝功能损害」的调查. 所谓药物性肝损害,顾名思义就是服用药物或含有药物成分的食物导致的肝脏损害. ...
- 中关村程序员的 996 强制加班与工作效率成正比吗?
点击上方"CSDN",选择"置顶公众号" 关键时刻,第一时间送达! 本文作者为 CSDN 博客专家「博览群书1989」,原文:https://blog.csdn ...
- 塔望 · 食界人物|中国功能饮料A股第一股东鹏饮料创始人林木勤
关注行业,更要关注行业发展背后的人.关注企业,更要关注企业的人格化身--"企业家".人类在任何领域的创新和进步,都离不开企业家精神.优秀的企业家和企业家精神,是经济社会发展的重要推 ...
- 中关村程序员的996强制加班与工作效率
点击上方"程序人生",选择"置顶公众号" 第一时间关注程序猿(媛)身边的故事 图片源自网络 作者 博览群书1989 CSDN博客 https://blog.cs ...
- 学会数据库后学什么_用数据分析了一年的生活后学到的东西
学会数据库后学什么 by Rishal Hurbans 由Rishal Hurbans 用数据分析了一年的生活后学到的东西 (What I learned after analyzing my lif ...
最新文章
- 解决iframe 右边有空白的问题
- 彻底理解kafka中partition和消费者对应关系
- python可以干嘛知乎-一行Python代码能做什么?
- DWZ 验证 CLASS 规则
- MySQL - 库表设计之IP和TIMESTAMP的处理
- HD 1213 How Many Tables(裸 并查集)
- 狂神说mysql笔记_Mybatis学习笔记(狂神说)
- mysql删除记录后id不连续_Mysql数据库中使用DELETE语句时,一般删除一条记录后ID会不连续,才能让序号继续按顺序排列?...
- 【毕业设计】jsp+sql毕业选题系统(论文)
- linux 汇编 读取软盘,读取软盘逻辑扇区的汇编实现代码
- 回顾 | Apache Flink Meetup 杭州站圆满结束(附PPT下载)
- p39最大子数组问题o(lgn)
- 多线程与并发系列之CompletableFuture
- Python统计学01——数据可视化
- TeamTalk 详细介绍
- arcgis的python安装包_用Python使用arcgis中站点包arcpy
- WSTMART电商开源版安装教程-徐新帅-专题视频课程
- windows 下如何让一个窗口置顶?
- 2017年10月 oracle 关键补丁更新
- [Node] Node.js Webpack和打包过程
热门文章
- ChinaJoy“美”不胜收之外的一些个人记录-工具篇SoftImage
- war3 1.27完成
- 中国农产品物流行业消费状况与十四五运行形势分析报告2022版
- 以太坊智能合约中随机数预测
- nLite 制作精简版合集光盘常见问题
- C++编程实现多显示器控制(复制、横屏、纵屏,显示器个数)等
- 关于ASL(平均查找长度)的简单总结
- 3个赚钱思路和案例,都是暴利赚钱项目,最后一个你肯定见到过
- 深度学习基础入门篇[五]:交叉熵损失函数、MSE、CTC损失适用于字识别语音等序列问题、Balanced L1 Loss适用于目标检测
- FPGA基础入门【3】Blink逻辑及仿真