CF413E Maze 2D

博客介绍了如何使用线段树维护一个2*len矩阵中,从四个角落到相对角落的最短路径问题。
摘要由CSDN通过智能技术生成
对于一个区间,即2*len的一个矩阵,保存以下4个最小值:
1.左上到右上的最短距离;
2.左上到右下的最短距离;
3.左下到右上的最短距离;
4.左下到右下的最短距离。
线段树维护即可。
#include <bits/stdc++.h>
using namespace std;
const int N=2e5+5,inf=1e8;
int n,q;
char str[3][N];
struct node{
   int d1,d2,d3,d4;}T[N<<2];
//左上到右上  左上到右下  左下到右上  左下到右下 

inline node pushup(node a,node b)
{
   
	node ans;
	ans.d1=ans.d2=ans.d3=ans.d4=inf;
	ans.d1=min(ans.d1,min(a.d1+b.d1+1,a.d2+b.d3+1));
	ans.d2=min(ans.d2,min(a.d1+b.d2+1,a.d2+b.d4+1));
	ans.d3
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值