【裸线段树】Uestc-数据结构专题训练【A】

本文通过C++代码展示了如何使用裸线段树进行数据结构专题训练,包括构建、更新和查询操作。主要针对Uestc的题目A,适用于区间最大值查询和区间修改的问题。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

#include<iostream>
#include<cstring>
#include<cstdio>
#include<algorithm>
#include<cmath>
#define ll unsigned long long
#define maxn 100001
#define lson u<<1,l,mid
#define rson u<<1|1,mid+1,r
using namespace std;
int n,q;
int t,a,b;
struct node{
	ll ans;
	int l,r;
}e[maxn*4];
void build(int k,int l,int r)
{
	e[k].l=l;e[k].r=r;
	e[k].ans=0;

	if(l==r)return ;
	int mid=(l+r)>>1;
	build(k<<1,l,mid);
	build(k<<1|1,mid+1,r);
}
void update(int u,int l,int r,int x,int add)
{
	if(l==r)
	{
		e[u].ans+=add;
		return;
	}
	int mid=(l+r)>>1;
	if(x<=mid) update(lson,x,add);
	else update(rson,x,add);	
	e[u].ans=max(e[u<<1].ans,e[u<<1|1].ans);
}
long long query(int k,int left,int right)  
{  
 
### UESTC 迷宫问题使用的数据结构解析 在处理 UESTC 迷宫问题时,主要采用栈和队列这两种基本的数据结构来实现不同类型的搜索算法。 对于深度优先搜索 (DFS),通常使用 **栈** 来保存路径上的节点。每当访问一个新的位置时,将其压入栈中;当遇到死胡同或目标点时,则从栈顶弹出最近一次进入的位置继续探索其他分支[^1]。 而广度优先搜索 (BFS) 则依赖于 **队列** 的先进先出特性来进行层次遍历。每次从未被标记过的邻居结点中选取最浅层的一个加入到待处理列表里直到找到出口为止。 除了上述两种核心组件外,在实际编码过程中还需要定义迷宫的地图表示方法以及状态记录机制: - 地图可以由二维数组构成,其中每个元素代表相应坐标的通行情况(可走与否),例如 `0` 表示墙壁不可通过,`1` 或者其他正整数值则意味着该处为空地允许行走。 - 访问标志位同样利用相同大小的空间存储布尔型变量用于指示某格子是否已经被考察过,防止重复计算造成无限循环。 ```python from collections import deque def bfs(maze, start, end): queue = deque([start]) visited = set() while queue: current = queue.popleft() if current == end: return True for neighbor in get_neighbors(maze, current): if neighbor not in visited and maze[neighbor[0]][neighbor[1]] != 0: visited.add(neighbor) queue.append(neighbor) return False def dfs(maze, start, end): stack = [start] visited = set() while stack: current = stack.pop() if current == end: return True for neighbor in get_neighbors(maze, current): if neighbor not in visited and maze[neighbor[0]][neighbor[1]] != 0: visited.add(neighbor) stack.append(neighbor) return False ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

真·skysys

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值