树状数组
文章平均质量分 82
AbelTomato
已识乾坤大,犹怜草木青
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
洛谷P3253 [JLOI2013] 删除物品
摘要:该文介绍了解决[JLOI2013]删除物品问题的算法。题目要求将两堆物品按优先级删除,每次只能移动或删除堆顶物品。作者提出将两堆物品拼接成一个序列,用树状数组维护区间和,实现高效计算最小移动步数。算法通过排序确定删除顺序,利用树状数组统计移动步数,时间复杂度为O((N1+N2)log(N1+N2)),适用于1e5数据规模。原创 2025-11-24 00:20:27 · 719 阅读 · 0 评论 -
洛谷P3531 [POI 2012] LIT-Letters (非数字类逆序对)
摘要:本文讨论了洛谷题目P3531(POI 2012 LIT-Letters)的解法。题目要求将字符串a通过相邻字符交换变成字符串b的最小交换次数。核心思路是将问题转化为求逆序对个数,通过将目标字符串的字符位置离散化映射到原字符串,并使用树状数组计算逆序对数量。时间复杂度为O(nlogn)。该方法也适用于类似题目P5149和CF1430E。原创 2025-11-23 07:40:10 · 1176 阅读 · 0 评论 -
洛谷P6225 [eJOI 2019] 异或橙子
摘要:本文提出了一种高效解决区间异或查询问题的算法。通过分析异或运算的性质,发现当查询区间端点奇偶性不同时结果为0;相同时只需计算奇/偶数位置上的异或和。基于此,使用两个树状数组分别维护奇偶位置的值,实现单点更新和区间查询。算法时间复杂度为O(nlogn),适用于大规模数据。代码实现中通过位运算优化,提高了计算效率。原创 2025-11-22 09:04:26 · 937 阅读 · 0 评论 -
洛谷P1972 [SDOI2009] HH 的项链
摘要: 本文介绍了如何用树状数组离线处理区间不同元素查询问题。通过将查询按右端点排序,从左到右遍历时,对于每个元素保留最后一次出现的位置,用树状数组维护前缀和。当处理到某个查询区间 $[l,r]$ 时,只需查询 $[l,r]$ 内的前缀和即可得到答案。该方法时间复杂度为 $O(m\log m + n\log n)$,适用于静态查询场景。原创 2025-11-21 00:06:40 · 1304 阅读 · 0 评论 -
洛谷P5094 [USACO04OPEN] MooFest G 加强版
本文提出了一种使用树状数组高效解决奶牛交流问题的算法。通过将奶牛按听力值排序,并利用两个树状数组动态维护位置信息和计数,可以快速计算每头奶牛与之前所有奶牛的距离总和。时间复杂度为O(nlogn),相比线段树实现更简洁高效。该方法巧妙地利用了树状数组的前缀查询特性,避免了直接计算的复杂度,为类似区间统计问题提供了参考。原创 2025-11-20 00:04:16 · 1108 阅读 · 0 评论 -
洛谷P2448 无尽的生命 (逆序对+离散化巧解)
摘要: 题目P2448要求计算经过多次位置交换后的序列中逆序对的数量。由于原始序列的规模过大(可达$2^{31}-1$),直接处理不可行。通过离散化将涉及的位置映射到连续下标,交换后形成新序列。逆序对的计算分两部分:离散化序列的逆序对数(通过归并排序或树状数组实现)和未交换连续位置间的贡献(通过坐标差调整)。总时间复杂度为$O(k\log k)$,适用于$k\leq 10^5$的数据规模。原创 2025-11-20 00:05:56 · 1113 阅读 · 0 评论 -
树状数组笔记
本文回顾了树状数组的实现原理与应用,通过与线段树的对比展示了其效率优势。树状数组通过维护特殊区间实现O(logn)的单点更新和前缀查询,其核心在于lowbit操作确定管辖范围。文中提供了完整的C++实现模板,包括初始化、更新、查询等方法。与线段树的性能对比显示,在处理单点更新和区间求和时,树状数组更具优势。文章还包含线段树的实现代码作为参照,强调树状数组实现更为简洁高效的特点。原创 2025-11-19 07:50:37 · 438 阅读 · 0 评论
分享