请注意,修改的时候修改成的值 k 可能是负数,所以在寻找路径最大值的时候初始值一定要设成负无穷大!线段树同理。因为本蒟蒻没踩坑所以并不知道会错哪几个点,因为我懒,所以你们可以自行测试一下附代码:
查找路径最大值:
int find_max_line(int x,int y){
int ans;
ans = INT_MIN;
while(b[x].top!=b[y].top){
if(b[b[x].top].d<b[b[y].top].d){
swap(x,y);
}
ans = max(ans,find_max(1,b[b[x].top].id,b[x].id));
x = b[b[x].top].fa;
}
if(b[x].d>b[y].d){
swap(x,y);
}
ans = max(ans,find_max(1,b[x].id,b[y].id));
return ans;
}
线段树内找最大值:
int find_max(int now,int l,int r){
if(a[now].r<l || a[now].l>r){
return INT_MIN;
}
if(l<=a[now].l && a[now].r<=r){
return a[now].maxn;
}
return max(find_max(now*2,l,r),find_max(now*2+1,l,r));
}