POJ1195(二维线段树)

本文介绍了二维线段树的数据结构及其应用,重点讲解了如何在一维线段树的基础上增加Y坐标构建X坐标上的树。内容包括二维线段树的数组模拟方式以及在更新和查询时的‘先Y后X’方法。同时,提供了POJ1195题目的解题思路和代码示例。

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

二维线段树

二维线段树的基本结构就是在一维的基础上增加一棵线段树,实现树套树的结构这里以Y坐标为主,在Y坐标基础上构建X坐标上的树。仍然用数组去模拟树,只不过这里用二维数组修改某个结点是先从Y方向上查找对应位置,找到Y坐标后在找X坐标,在找Y坐标是先不用管X坐标的值,找到Y坐标后在在改行中找X坐标,类似于求积分中的先Y后X法。查找是也一样。在传递参数是一定要认真,参数传递错误很难发现和修改。

例题:poj1195点击打开题目链接

代码如下:

#include <cstdio>

using namespace std;

const int MAXN = 1050;
int num[2 * MAXN][2 * MAXN], s;

void update_x(int rtx, int rty, int l, int r, int x, int a)
{
    num[rty][rtx] += a;

    if(l < r)
    {
        int m = (l + r) / 2;
        if(x <= m) 
            update_x(rtx * 2, rty, l, m, x, a);
        else 
            update_x(rtx * 2 + 1, rty, m + 1, r, 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值