cdq分治&整体二分学习缓存

cdq分治:离线后化时间序为其他某些维上的序列,对于每一次二分操作, 所有左边的数据可能对右边的数据产生影响,在二维逆序对里表现为每次把右子区间的一个数放入左区间时都要加上左边还没放入的数的个数,在三维偏序中改为用树状数组维护原来的值,即用某种数据结构维护(二维逆序对int,三维树状数组,四维再来一个cdq)分治后左区间对右侧区间的影响,任意一对答案只会在这两个数正好被分在相邻的区间时统计,这样就不会出锅。

整体二分:对于多个询问+修改而言,将她们用时间顺序排序,然后对于每一个询问而言,(以k大数为例)将前面所有大于k的修改加入,然后对于每个个询问,如果她在这时已经比k大了就将之放入左侧区间,否则将其减去此时已有答案后加入右侧递归区间;对于所有修改,比mid大的就放入右侧递归,否则放入左侧递归,相当于对于右侧递归序列里的所有询问而言,左侧递归序列中所有修改都能对其产生答案故不用再考虑,因此就转化成了一个近似相同的递归。

珂欣隆的分块:对于时间分块,将修改——》删除+插入,对于每个时间块先全部挖掉,最后再把可能对块内询问造成影响的全部修改暴力搞进去,然后就获得了n3/5方的优美暴力

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值