树状数组

图片说明

代码

#define lowbit(x) ((x) & (-x))
ll tree[N];
inline void update(int i, ll x) {
    for (int pos = i; pos < N; pos += lowbit(pos)) tree[pos] += x;
}
inline ll query(int n) {
    ll ans = 0;
    for (int pos = n; pos; pos -= lowbit(pos)) ans += tree[pos];
    return ans;
}
inline ll query(int a, int b) { return query(b) - query(a - 1); }

What

树状数组支持:

  • 单点修改:更改数组中一个元素的值
  • 区间查询:查询一个区间内所有元素的和

两种操作的时间复杂度均为,是暴力+)和前缀和+)的折中。

可以通过引入差分数组的方式完成对区间修改,单点查询的支持。

图片说明

Why

图片说明

图片说明

How

逆序数

(待填)

算法竞赛之路 文章被收录于专栏

整理、记录算法竞赛的好题

全部评论

相关推荐

做个有文化的流氓:Offer收割机
点赞 评论 收藏
分享
09-01 09:00
已编辑
四川旅游学院 运营
牛客55195891...:主要是专业不好,别的没毛病
牛客解忧铺
点赞 评论 收藏
分享
评论
1
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务