DAY2(线段树例题)

1 铺瓷砖:

俩类操作, op 1,l,r 在 L,R之间铺一种与之前不同的瓷砖(即所有瓷砖都不相同)

                   op 2,L,R 查询L,R之间有几种不同的瓷砖

直接利用 区间覆盖无法加工父信息, 如 L1,R1铺,L2,R2铺, 取max不一定可以得到2 ;

只需计算1,R中有几个铺瓷砖的起点, 1,L有多少铺瓷砖的终点,其余的一定会留在L,R中

例2 : 增加等差数列;

op 1 在区间L,R中增加以a 为首项,d为公差的等差数列;

op2 在区间L,R中查询区间和

区间加工为简单的求和操作,

而区间修改需要维护lazy a,和lazy d ,每次下放需要下放这俩个信息即可;

例3: 求区间方差

op1 在区间L,R增加 v;

op 2 在区间L,R查询 方差

思路: 利用 方差为(X1-x平)平方...... X1平方+X2平方....-2*X1*X平-X平平方;

维护平方 和和总和即可

大类: 区间合并

   求区间L,R的最长1序列长度

op1 将 L,R全设为1

op2 将L,R全设为0

op3 将L,R反转

op4 求L,R最长1 序列

加工:想要的到父亲的序列信息(只保留最长),那么必须要可合并左右孩子区间,要处理每个区间的前缀和后缀,合并如果这个合并长度是该区间的最长,那么将保留在max1 中,否则这一段将没有意义, 所以max1 存着一个区间的重要信息;

区间重置,只需要将所有信息更改即可,注意一个区间重置需要将其他lazy先置空;

区间反转, 由于任然需要 前缀与后缀,所以需要同时处理前缀后缀0与1;max0与1;

最长L,R交替长度,支持修改操作;

给定初始都是L的数组,支持修改操作

op : idx ;反转操作;

每次反转为给出数组的最长L,R交替长度;

由于加工后的到L,R长度需要区间查询,所以利用线段树维护;

修改为简单的单点修改即可,

加工为父信息需要利用区间合并知识(只需最大值信息);

L,RLRLRLR     LRLRLRLR    合并最关键在于中间段;新的最大值应该是左孩子的右L+右孩子的左L长度;然后继续更新前缀L,R后缀L,R;

  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值