【从此不怕强制在线】二进制分组学习笔记

总是遇到分治被强制在线卡真是令人不爽>_<
那我们就用二进制分组大法来破掉他的强制在线!
二进制分组大法是什么咧= =
(学习自许昊然《浅谈数据结构题的几个非经典解法》)
我们把一个数拆成2的x次幂数的和的形式
比如:
17=16(4)+1(0)
18=16(4)+2(1)
23=16(4)+4(2)+2(1)+1(0)
于是在分治算法中我们就有了这样一种做法:
比如有一个题他使用x^lastans这种手段来实现强制在线
同时如果去掉强制在线的话这个题目可以分治
(也就是所谓的满足”修改独立性质”但是没有办法分治)
那么我们就根据他的操作数目把这些操作中的全部修改操作按二进制分组划分成logn组
把这些修改操作加上线段树来进行维护.
假设我们可以在线处理查询操作
对于每个查询操作只需要对分出的那些组每组全都查询一遍.
那么执行一个修改操作或者新增一个修改操作,会使后面所有修改操作发生变化,这会改变修改操作的数目,会使得当前分组不合理,因此我们暴力的增加出一个分组/删除一个分组.
(其实看这些并不能看懂什么意思…我们来看看他在论文答辩里面里的样例)
忽略半平面的部分叭!
这里写图片描述
这里写图片描述
这里写图片描述
贴这些就能看懂了…
那么根据经(yao)验(chuan)
这东西的复杂度是

  • 6
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值