推荐星级:
  • 1
  • 2
  • 3
  • 4
  • 5

树状数组的扩展应用:区间修改与区间查询.docx

更新时间:2026-10-16 12:47:00 大小:38K 上传用户:江岚查看TA发布的资源 标签:树状数组区间修改区间查询差分数组前缀和 下载积分:2分 评价赚积分 (如何评价?) 打赏 收藏 评论(0) 举报

资料介绍

树状数组的扩展应用:区间修改与区间查询

一、从单点到区间

标准树状数组支持单点更新和前缀和查询。通过差分技巧,可以扩展到区间更新和区间查询。

二、区间更新 + 单点查询

利用差分思想,将区间更新转化为两个单点更新:

// 差分数组 diff[i] = arr[i] - arr[i-1]
// 区间[l, r]加上delta
// 等价于:diff[l] += delta, diff[r+1] -= delta

// 查询arr[i] = 前缀和diff[1..i]

typedef struct {
    int *tree;
    int n;
} BIT;

// 区间[l,r]加delta
void rangeUpdate(BIT *bit, int l, int r, int delta) {
    update(bit, l, delta);      // diff[l] += delta
    update(bit, r + 1, -delta); // diff[r+1] -= delta
}

// 查询arr[i]
int pointQuery(BIT *bit, int i) {
    return query(bit, i);   // 前缀和 diff[1..i]


部分文件列表

文件名 大小
树状数组的扩展应用:区间修改与区间查询.docx 38K

全部评论(0)

暂无评论

上传资源 上传优质资源有赏金

  • 打赏
  • 30日榜单

推荐下载