首页 > 其他分享 >差分思想的一些运用

差分思想的一些运用

时间:2023-10-31 13:56:50浏览次数:24  
标签:思想 差分 修改 差值 数组 lca 运用 树上

差分

差分的基本模型是:

若有一数组 \(a[~] = \{1,1,4,5,1,4\}\),定义差分数组 \(d[~],~ d_i = a_i-a_{i-1}~(i\in[1,n])\) .
则 \(d[~] = \{1,0,3,1,-4,3\}\) .

现在要对它进行在线区间修改,假设有一次修改为在 \([2,4]\) 上每一位 +1,那么修改后 \(a[~] = \{1,2,5,6,1,4\}\) .

而差分思想只需要在 \(l=2\) 上 +1,\(r+1=5\) 上 -1,即 \(d[~] = \{1,1,3,1,-5,3\}\) .

这是显然的,\(l\) 比 \(l-1\) 大 1, \(r+1\) 比 \(r\) 小 1, \([1,l-1],[l,r],[r+2,n]\) 差值不变。

最后离线用前缀和还原结果:\(a_i = \sum\limits_{j=1}^{i}d_j~(i\in[1,n])\) .


树上差分

然鹅,这次要重点记录的是 树上差分(学了lca才发现有这玩意),分两种:树上点差分,树上边差分。

先讨论初始值为 0 的情况。

点差分

类似地,假如在一棵树上要对 \(x\to y\) 的唯一路径上的所有点 +1,可以定义一个差分数组 \(d\),则:

\[d_x + 1,~d_y + 1,~d[lca(x,y)] -1,~st[lca(x,y)][0] - 1 \]

在深搜回溯时累加儿子差值还原,可以发现,\(lca(x,y)\) 被访问了两次, 所以要在上面多 -1,其余和模型同理。

image

边差分

标签:思想,差分,修改,差值,数组,lca,运用,树上
From: https://www.cnblogs.com/hi-zwjoey/p/17800066.html

相关文章

  • 运用chatGPT生成E-R图的prompt
     根据以上内容,让我们定义用例让我们为用例定义一个数据模型   更详细地描述数据模型或使用Markdown的表格格式这种模型可以根据具体的用例进行扩展和修改,以满足需求分析和设计过程中的实际需要。 为所有的数据模型定义关系,实体关系图输出为PlantUML 将带......
  • spring-boot-starter-redis 熟练运用
    Redis的Java客户端很多,官方推荐的有三种:Jedis  (javaredis)RedissonLettuceSpring对Redis客户端进行了整合,提供了SpringDataRedis,在SpringBoot项目中还提供了对应的Starter,即spring-boot-starter-data-redis。Jedis(了解)项目准备Jedis是Redis的Java版本客户端,现......
  • 一种编程思想——利用settings文件实现功能的增减
    一.正常函数版本的思路1.notify.pydefwechat(content):print('微信通知:%s'%content)defqq(content):print('qq通知:%s'%content)defemail(content):print('邮箱通知:%s'%content) 2.start.pyfromnotifyimport*defsend_all(c......
  • 如何将设计模式责任链模式运用到工作当中
    (文章目录)......
  • 运用递归学习新知识——插入排序
    还是老样子,先讲一下插入排序的一个概念,比如校合唱团要按身高排队,从左到右由矮到高,小糖同学左边的同学已经按照身高站好了,右边还很乱,于是团长小蓝姐姐想了一个办法,她叫小糖同学往左看,小糖同学左边第一位叫男低1号,左边第二位叫男低2号,右边第一位叫男高1号,右边第二位叫男高2号,以此类......
  • 重学递归思想,体悟数据结构奥妙
       说来好笑,暑假一腔热血想进acm,在学插入排序,归并排序这两个玩意,耗费了我整整一个星期都没搞懂,一度让我想放弃,觉得自己刚开始学算法就被打败了,不配coding了,后面请教别人,才发现里面有个递归思想我还不会,所以很痛苦。。。暑假结束了,递归我还没那么懂,今天来复仇了     ......
  • Codeforces Round 904 (Div. 2) C. Medium Design(前缀和+差分)
    CodeforcesRound904(Div.2)C.MediumDesign思路:因为出现的线段应该为不相同的线段,所以最小值应该为\(1\)或\(m\)因此我们可以通过差分储存线段范围内的加值,再用前缀和表示这个范围内的最大加值sl为不包含\(1\)的线段的差分,sr为不包含\(m\)的线段差分记录用于差分的......
  • DSPLearning_day02--卷积、互相关和差分方程求解的matlab实现
    卷积实现\[y(n)=x(n)*h(n)\\y(n)=\sum_{m=-\infin}^{\infin}x(m)h(n-m)\]%确定第一个序列的x轴和y轴坐标nx=[0:1];x=[12];%确定第二个序列的x轴和y轴坐标nh=[0:2];h=[321];%conv是matlab自带的对两个序列进行卷积的函数y=conv(x,h);%注意配好......
  • Acwing393. 雇佣收银员 题解 差分约束
    题目链接:https://www.acwing.com/problem/content/description/395/解题思路:差分约束。为了方便起见,定义第\(i\)个时间段为\(i-1:00\)到\(i:00\)首先,为了方便开一个额外的点,令\(R_i\)对应为题目中的\(R(i+1)\),即\(R_i\)表示\(i-1:00\)到\(i:00\)这个时间段的最小需求......
  • R语言用逻辑回归预测BRFSS中风数据、方差分析anova、ROC曲线AUC、可视化探索
    行为风险因素监测系统(BRFSS)是一项年度电话调查。BRFSS旨在确定成年人口中的风险因素并报告新兴趋势。例如,调查对象被询问他们的饮食和每周体育活动、HIV/AIDS状况、可能的吸烟情况、免疫接种、健康状况、健康日数-与健康相关的生活质量、医疗保健获取、睡眠不足、高血压认知、胆固......