P6329 【模板】点分树 | 震波

P6329 【模板】点分树 | 震波

这是一道模板题,需要支持两个操作,操作一就是单点修改点权,操作二就是查询距离x不超过k的点权值和。

我们考虑建出点分树,然后对于每个点维护两个数据结构,一个处理当前分治范围到当前点的贡献,一个处理当前分治范围到点分树上父亲节点的贡献,然后我们就可以通过容斥来得到当前范围内的贡献了。

另外我们还需要预处理lca,需要st表处理一下。

代码细节:

  1. 对于预处理lca的部分,代码实现比较巧妙,尤其是定义getmn函数节省了很多的代码
  2. 另外树状数组需要动态开,所以我们就用vector处理,然后resize为子树大小,另外需要处理一种特殊情况,就是我查询的范围已经超过了我定义的大小
  3. 一定要小心有些预处理函数没有加入到主函数中,这些预处理函数应该是有固定的位置的。
  4. 还有一个非常非常重要的点,就是BIT处理的时候一定要引用,否则就不是O(1)的传址,而是O(n)的传值了。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值