Link
luogu P4513 小白逛公园
ybtoj【线段树课堂过关】【例题3】小白逛公园
题面//因为不知道侵不侵权所以就是题面是私密的,有账号的直接看转送门就可了
题目大意
给你一个序列,要维护两个操作。
单点修改和在一个区间中找权值最大的子区间的权值。
解题思路
第一次学习这种模板(也有可能不是第一次😅)
找一个最大的区间,可以想到用 左子树的最大后缀 + 右子树的最大前缀 拼在一起
每个节点多加上三个附加值—— l s u m , r s u m , s u m lsum,rsum,sum lsum,rsum,sum,就是左子树的最大后缀, 右子树的最大前缀,最大区间
为了保证最大后缀和最大前缀能拼在一起,这两个缀必须加上对方…
t r e e [ r o o t ∗ 2 ] . r s u m + t r e e [ r o o t ∗ 2 + 1 ] . s tree[root * 2].rsum + tree[root * 2 + 1].s tree[root∗2].rsum+tree[root∗2+1].s=>最大后缀
t r e e [ r o o t ∗ 2 + 1 ] . l s u m + t