树状数组模板加理解
树状数组2的关键是lowbit()函数,lowbit(x)=x&-x,功能是找到x的二进制的最后一“1”(不得不感叹这个精妙之处),其原理是利用负数的补码,补码是源码取反加一,例如x=6=000110(2),-x=x补=111010(2),那么lowbit(x)=2;
大致上树状数组是运用三个函数来实现lowbit(),add(),sum(),
lowbit(x)引出一个tree[ ]数组,所有的计算都是围绕tree[ ]进行,
#define lowbit(x) ((x)& -(x))
原创
2020-10-06 11:45:44 ·
82 阅读 ·
0 评论