关于树状数组初次接触者的疑问
查看原帖
关于树状数组初次接触者的疑问
1446545
XHZnewlife楼主2025/1/21 21:10

我一直不太能熟练掌握树状数组访问父/子节点的下标运算相关德数学知识,于是:

struct tree{
	int num;
	int lid,rid;
	int left,right;
};
tree leaf[1000005];int cnt=0;
int a[100005];
inline int build(int l,int r){
	leaf[++cnt]={0,0,0,l,r};
	if(l==r){leaf[cnt].num=a[l];return cnt;}
	int mid=l+r>>1;
	leaf[cnt].lid=build(l,mid);
	leaf[cnt].rid=build(mid+1,r);
	leaf[cnt].num=leaf[leaf[cnt].rid].num+leaf[leaf[cnt].lid].num;
	return cnt;
}

就用一种类似于链式前向星的方式来存,以上是建树的代码

剩下的代码正在敲

疑问在于是否所有需要树状数组的题都能这么写

2025/1/21 21:10
加载中...