news 2026/7/23 11:59:08

树状数组——知识点

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
树状数组——知识点

树状数组

原理说明

https://www.bilibili.com/video/BV1ce411u7qP/?spm_id_from=333.1007.top_right_bar_window_history.content.click&vd_source=9a638535989a48f74c7b938fa32bf477

用于:单点修改 + 前缀查询,两者都要 O(log N) 的场景
本质:二进制模拟树状结构,把前缀和拆成 log N 段,每段长度 = lowbit,修改时从子节点到根节点,查询时计算相关段。

constintMAXN=100005;intbit[MAXN];// 树状数组,索引从 1 开始// 单点更新:在位置 x 加上 vvoidadd(intx,intv){for(;x<MAXN;x+=x&-x)bit[x]+=v;}// 前缀查询:查询 [1, x] 的和intsum(intx){intans=0;for(;x>0;x-=x&-x)ans+=bit[x];returnans;}

模板题

逆序对计数

本质根据B求A的逆序数

#include <bits/stdc++.h> using namespace std; // 树状数组求逆序对 const int MAXN = 100005; int bit[MAXN]; void add(int x, int v) { for (; x < MAXN; x += x & -x) bit[x] += v; } int sum(int x) { int s = 0; for (; x > 0; x -= x & -x) s += bit[x]; return s; } int main() { int n; cin >> n; vector<int> A(n), B(n); for (int i = 0; i < n; i++) cin >> A[i]; for (int i = 0; i < n; i++) cin >> B[i]; // 记录 B 中每个值的位置 vector<int> pos(n + 1); for (int i = 0; i < n; i++) pos[B[i]] = i + 1; // 位置从 1 开始,方便树状数组 // 求 C 的逆序对数 long long ans = 0; for (int i = 0; i < n; i++) { int target = pos[A[i]]; // 已出现i个数,减去小于等于 target 的元素个数,就是逆序个数 ans += i - sum(target); add(target, 1); } cout << ans << endl; return 0; }
版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/7/23 11:58:48

全面预算管理手工管不住钱?全面预算管理数字化怎么做才能落地?

预算一执行就失控&#xff0c;财务部到底错在哪&#xff1f; 上个月跟一位做了十几年财务总监的前辈聊天&#xff0c;他说了一句话让我印象很深&#xff1a;很多企业的预算就是一纸空文——年初编的时候轰轰烈烈&#xff0c;年中执行的时候没人当回事&#xff0c;年底考核的时…

作者头像 李华
网站建设 2026/7/23 11:58:29

小天鹅TD12V20PRO洗烘一体机深度评测:选购指南与使用技巧

省钱又好用&#xff0c;小天鹅 TD12V20PRO 滚筒洗烘一体洗衣机品类推荐&#xff0c;你真的会选吗&#xff1f; 在如今快节奏的生活中&#xff0c;洗衣机的选择直接关系到家庭生活的便利性和舒适度。面对市场上琳琅满目的洗衣机产品&#xff0c;很多消费者在选购时往往陷入纠结&…

作者头像 李华
网站建设 2026/7/23 11:57:14

WebRTC实现网页版国际视频聊天平台体验与优化

1. 项目概述&#xff1a;网页版国际视频聊天平台体验 最近在测试一个挺有意思的网页端视频聊天平台&#xff0c;不需要下载APP&#xff0c;打开浏览器就能直接使用。这个平台的特点是随机匹配全球用户进行一对一视频交流&#xff0c;界面简洁&#xff0c;连接速度也不错。作为经…

作者头像 李华
网站建设 2026/7/23 11:55:25

Cortex-M4中断优先级配置与系统控制寄存器实战解析

1. 项目概述与核心价值 在嵌入式开发&#xff0c;尤其是基于ARM Cortex-M4这类高性能微控制器的项目中&#xff0c;中断系统的配置往往是决定系统实时性、稳定性和可靠性的基石。很多开发者&#xff0c;尤其是从应用层转向底层或从其他架构迁移过来的朋友&#xff0c;常常对着一…

作者头像 李华
网站建设 2026/7/23 11:50:24

Clawdbot开源项目:自主智能体开发实战指南

1. 项目概述&#xff1a;Clawdbot与自主智能体开发全景在2026年的技术圈&#xff0c;一个名为Clawdbot的开源项目突然引爆了开发者社区。这个项目最颠覆性的创新在于——它让AI从被动应答的"工具"变成了主动介入生活的"伙伴"。与传统的聊天机器人不同&…

作者头像 李华