差分及树上差分学习笔记

大佬博客链接:https://www.cnblogs.com/ice-wing/p/7709311.html

 

差分:

于是先来说一下差分吧,假设现在给你一个序列,要对区间进行修改,只有区间加和区间减,然后求一次整体的最大值

好事,我们只需要用线段树就好了,但是如果数据范围比较大,那么线段树就死了,这时我们可以考虑这样一种操作

比如说这样一个序列

1 2 2 4 5 6 5 7 8

假设我们要修改区间[4, 7],将区间内所有数都加1,那么我们可以再开一个数组用来标记

在4的位置标记+1,在8的位置标记-1

0 0 0 1 0 0 0 1 

这时我们就可以发现对这个标记数组求一个前缀和

0 0 0 1 1 1 1 0

哦好事,我们发现我们就已经知道在某一段区间要加上几,这样我们就一个O(n)扫一遍,取个最大值

这题就结束了。

题?回头再说 

posted @ 2018-10-25 20:47 YuWenjue 阅读(...) 评论(...) 编辑 收藏