【数据结构】Binary_Indexed_Tree

本文介绍了一种基于树状数组实现的点修改段求和算法。该算法通过树状数组进行快速更新和区间求和操作,适用于解决动态变化的数据结构问题。文中详细展示了算法的实现过程,并提供了具体的伪代码。
点修改 段求和

1
var 2 a:array[1..100000] of integer; 3 t:array[1..100000] of longint; 4 i,j,n:integer; 5 function lowbit(x:integer):integer; 6 begin 7 exit(x and (-x)); 8 end; 9 procedure edit(k:integer;x:longint); 10 var 11 i,temp:integer; 12 begin 13 i:=k; 14 temp:=a[k]-x; 15 while i<=n do 16 begin 17 inc(t[i],temp); 18 i:=i+lowbit(i); 19 end; 20 end; 21 function sum(k:integer):longint; 22 var 23 i:integer; 24 begin 25 i:=k; 26 while i>0 do 27 begin 28 inc(sum,t[i]); 29 i:=lowbit(i); 30 end; 31 end; 32 begin 33 for i:=1 to n do 34 begin 35 for j:=i-lowbit(i)+1 to i do inc(t[i],a[j]); 36 end; 37 end.

 

转载于:https://www.cnblogs.com/OmegaIota/p/3257021.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值