题意

给一个\(2*n\)的迷宫,有障碍物,\(m\)次询问,每次查询两点间最短路

题解

把上下当成一个点,每个点有上下两个接口
用线段树维护
根据地图初始化每个点信息
然后合并区间信息(类似\(floyd\))
想明白了写出来还是很简单
然后查询两点距离即可

为什么这样不会错?
画图可以知道
因为宽为\(2\)
所以最短路肯定不会先在区间外绕一圈再回来
所以查询也是直接查询两点在区间内的最小距离就是答案
如果宽更大就必须保证不能向左走才可以这么做(不然为什么还需要最短路算法,线段树还支持修改)
比如宽为\(3\)时就可能区间内不联通
但是可以绕一圈到达

#include<bits/stdc++.h>using namespace std;#define gc c=getchar()
#define r(x) read(x)
#define ls (rt<<1)
#define rs (rt<<1|1)template<typename T>
inline void read(T&x){x=0;T k=1;char gc;while(!isdigit(c)){if(c=='-')k=-1;gc;}while(isdigit(c)){x=x*10+c-'0';gc;}x*=k;
}const int INF=1e9;const int N=2e5;char s[2][N];struct seg{int dist[2][2];const int* operator [](const int &x)const{return dist[x];}int* operator [](const int &x){return dist[x];}}tr[N<<2];inline seg operator +(const seg &a,const seg &b){seg ret;for(int i=0;i<2;++i){for(int j=0;j<2;++j){ret[i][j]=INF;for(int k=0;k<2;++k)ret[i][j]=min(ret[i][j],a[i][k]+b[k][j]+1);}}return ret;
}inline void build(int rt,int l,int r){if(l==r){tr[rt][0][0]=tr[rt][0][1]=tr[rt][1][1]=tr[rt][1][0]=INF;if(s[0][l]=='.'){tr[rt][0][0]=0;if(s[1][l]=='.')tr[rt][0][1]=1;}if(s[1][l]=='.'){tr[rt][1][1]=0;if(s[0][l]=='.')tr[rt][1][0]=1;}return;}int mid=(l+r)>>1;build(ls,l,mid);build(rs,mid+1,r);tr[rt]=tr[ls]+tr[rs];
}inline seg query(int rt,int l,int r,int x,int y){if(x<=l&&r<=y)return tr[rt];int mid=(l+r)>>1;if(y<=mid)return query(ls,l,mid,x,y);else if(x>mid)return query(rs,mid+1,r,x,y);else return query(ls,l,mid,x,y)+query(rs,mid+1,r,x,y);
}int n,m;inline int Query(int x,int y){int l=(x-1)%n+1;int r=(y-1)%n+1;if(l>r)swap(l,r),swap(x,y);return query(1,1,n,l,r)[x>n][y>n];
}int main(){r(n),r(m);scanf("%s",s[0]+1);scanf("%s",s[1]+1);build(1,1,n);for(int a,b;m;--m){r(a),r(b);int ans=Query(a,b);if(ans==INF)ans=-1;printf("%d\n",ans);}
}

转载于:https://www.cnblogs.com/yicongli/p/9745547.html

CodeForces413E Maze 2D相关推荐

  1. 任意大小迷宫自动生成+BFS寻路+生成无损迷宫bitmap(.BMP)图片

    目录标题 迷宫游戏 迷宫的生成 BFS寻找路线 最后的一些细枝末节 如何使用程序 链接 I TURN COFFEE INTO CODE! 800x800迷宫自动解路径 镇楼图 https://pan. ...

  2. 蘑菇云【行空板Python入门教程】第五课:2D迷宫

    2D迷宫 迷宫游戏是许多小伙伴儿时经常做的游戏,它能锻炼我们的空间推理能力.逻辑力.耐心与恒心,也能带来许多欢乐. 让我们设计一个迷宫游戏,在DFRobot-行空板屏幕上体验一下吧! 任务目标 通过三 ...

  3. 2D池化IPoolingLayer

    2D池化IPoolingLayer IPooling层在通道内实现池化.支持的池类型为最大, 平均 和 最大平均混合. 层描述:二维池化 使用张量上的2D滤波器计算池化a tensor A, of d ...

  4. CVPR2019论文解读:单眼提升2D检测到6D姿势和度量形状

    CVPR2019论文解读:单眼提升2D检测到6D姿势和度量形状 ROI-10D: Monocular Lifting of 2D Detection to 6D Pose and Metric Sha ...

  5. hnswlib RuntimeError: Cannot return the results in a contigious 2D array. Probably ef or M is to sma

    1. 问题现象 index = hnswlib.Index(space = '100', dim = 512) index.init_index(max_elements = 100, ef_cons ...

  6. 【radar】毫米波雷达相关开源项目代码汇总(工具箱、仿真、2D毫米波检测、融合、4D毫米波检测、分割、SLAM、跟踪)(6)

    [radar]毫米波雷达相关开源项目代码汇总(工具箱.仿真.2D毫米波检测.融合.4D毫米波检测.分割.SLAM.跟踪)(6) Toolbox pymmw https://github.com/m6c ...

  7. 【radar】毫米波雷达动态障碍物检测相关论文汇总(聚类、分类、稀疏2D点、4D点、雷达成像、原始数据处理)(4)

    [radar]毫米波雷达动态障碍物检测相关论文汇总(聚类.分类.稀疏2D点.4D点.雷达成像.原始数据处理)(4) Detection of Dynamic Objects Clustering 20 ...

  8. 从2D到3D的目标检测综述

    点云PCL免费知识星球,点云论文速读. 文章:An Overview Of 3D Object Detection 作者:Yilin Wang  Jiayi Ye 翻译:分享者 本文仅做学术分享,如有 ...

  9. 实现2D全景图的中心视野变换

    对于同一场景的2D全景图,如果想改变其视野中心位置,比如下图,初始情况下视野的中心位置是蓝框,如果想让红框的灯位于中心位置该怎么做呢? #include "opencv2/highgui/h ...

最新文章

  1. 2014“云”盘点:改变着的互联网和被改变的云计算
  2. 计算属性一般是没有set方法, 只读属性 ||计算属性的缓存
  3. 自定义键盘keyfere——pcsensor
  4. 阿里巴巴旗下平台口碑推出无人收银技术,改造便利店市场;重庆法院运用 AI 探索“智能判案”...
  5. Vrep当中的一些好用的工具(未完)
  6. Collections常用方法总结
  7. 三维图像处理_【图像处理】用于三维物体检测的三维骨干网络
  8. 如果每天给你888元,只能看书学习,不能玩手机电脑,你能坚持多少天?
  9. 企业如何进行数据质量评估
  10. 计算机主机组装报告,[转载]计算机硬件系统及组装【大一计算机实验报告】
  11. 计算机软件ui外观设计专利,GUI外观设计专利申请指南
  12. 家乡的春节html,家乡的春节日记
  13. js base64 php,php中的base64decode 与js中的互相转换
  14. CodeForces 596B Wilbur and Array 贪心
  15. 基于android的手机掌上购物
  16. Echarts动态地图实现
  17. 【轉】一個在台積電工作3年的工程師寫給學弟學妹們的信
  18. Python的简单数据类型案例
  19. Vue百度地图标注点定位显示
  20. 解决springboot上传图片无法显示问题

热门文章

  1. numpy多元线性回归_使用sklearn实现多元线性回归
  2. Spring Security HttpSecurity.formLogin
  3. virtualbox 网络配置
  4. 2.6 谷歌 Inception 网络简介
  5. flask url_for()
  6. 归纳推理测试没做完_天气热,教你用寒天粉做果冻,清凉爽滑,5秒吃完一盘没问题...
  7. es集群节点数和分片数关系_ES数据插入和查询流程是怎么样的?
  8. 如何 调系统相机_数码单反相机攻略,了解测光模式的区别
  9. Exchange Server 2016 独立部署/共存部署 (六)—— 创建数据库副本
  10. 初识 NGINX 服务网格