我有一个m * 3大小的2d向量,其中第一个col:较低范围,第二个col:较高范围,第三个col:值。并且我有一个大小为n(m的初始一维数组
void build_tree(long long int *tree,long long int index,long long int s,long long int e)
{
if(s==e)
{
tree[index]=0;
return;
}
if(s>e)
return;
long long int mid=(s+e)/2;
build_tree(tree,2*index,s,mid);
build_tree(tree,2*index+1,s,mid);
tree[index]=max(tree[2*index],tree[2*index+1]);
return;
}
void update_range(long long int *tree,long long int index,long long int s,long long int e,long long int lower,long long int upper,int v)
{
if(s>upper || e<lower)
{
return;
}
if(s==e && s>=lower && e<=upper)
{
tree[index]=tree[index]+v;
return;
}
if(s>=e)
return;
long long int mid=(s+e)/2;
update_range(tree,2*index,s,mid,lower,upper,v);
update_range(tree,2*index+1,mid+1,e,lower,upper,v);
tree[index]=max(tree[2*index],tree[2*index+1]);
return;
}
long arrayManipulation(int n, vector<vector<int>> queries) {
/*int a[10000000];
// vector<int>a;
for(int i=0;i<n;i++)
a[i]=0;*/
long long int *tree=new long long int(4*n+1);
build_tree(tree,1,0,n-1);
for(int i=0;i<queries.size();i++)
{
update_range(tree,1,0,n-1,queries[i][0]-1,queries[i][1]-1,queries[i][2]);
}
return tree[1];
}
对于输入n = 10000000和m = 100000 我遇到了细分错误,我尝试了long long int而不是int,但是它仍然给我带来细分错误。
预期的输出很长。