博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
浅谈差分
阅读量:7067 次
发布时间:2019-06-28

本文共 579 字,大约阅读时间需要 1 分钟。

故事是这样的,辣鸡我被要求写dfs序,前置技能是树上差分,然后只好十分不情愿地学习了一下。


 

差分

差分数组(b):原数组(a)中相邻的差构成的数组。(b[i]=a[i]-a[i-1],b[1]=a[1])

性质:其前缀和为原数组。(b[2]=a[2]-a[1],b[3]=a[3]-a[2],b[i]=a[i]-a[i-1],b[1]+b[2]+...b[i]=a[i])

Skill:根据差分数组(c)求前缀和数组。

c[i]=∑(1<=j<=i)a[j]=∑(1<=j<=i)∑(1<=k<=j)b[k]=∑(1<=j<=i)(j-i+1)*b[j]=(i+1)*∑(1<=j<=i)b[j]-∑(1<=j<=i)j*b[j];

  用途:树状数组的区间修改操作。

类似地,经常用差分来维护序列的区间操作或者记录区间的贡献。

树上差分

 处理的数据有关于边(x,y):

  b[x]++,b[y]++,b[lca(x,y)]-=2.

(lca没有边信息要存,所以全减掉)

处理的数据有关于点(x,y):

  b[x]++,b[y]++,b[lca(x,y)]--,b[father[lca(x,y)]]--.

 (lca信息也属于这条链内,所以只减一次)

转载于:https://www.cnblogs.com/ve-2021/p/10889792.html

你可能感兴趣的文章
针对tomcat日志乱码问题
查看>>
免费的协作和协同办公软件平台onlyoffice轻松部署
查看>>
WiFi覆盖下的生活 享受便利的同时 别忘记了安全
查看>>
关于ios 8 7 下的模态窗口大小的控制 代碼+場景(mainstoryboard)( Resizing UIModalPresentationFormSheet )...
查看>>
Linux软件包的管理--YUM
查看>>
Axis2发布webservice(1)--0配置发布
查看>>
Java Web笔记 – Servlet中的Filter过滤器的介绍和使用 编写过滤器
查看>>
我奋斗了18年,不是为了和你一起喝咖啡
查看>>
gearman简单介绍
查看>>
《Typecript 入门教程》 3、接口
查看>>
jsp的几种跳转比较
查看>>
用oracle查询当前数据库中的所有表
查看>>
决心书
查看>>
git 从版本控制中删除文件及.gitignore的用法
查看>>
cacti安装
查看>>
Spark核心概念
查看>>
Kali***(二)之被动信息收集——搜索引擎
查看>>
组策略参考文档1-共享打印机
查看>>
Linux的包管理工具介绍
查看>>
程序员如何成为架构师
查看>>