线段树分治

对于一类有插入、删除(撤销插入)和整体查询操作的题目,可以考虑用线段树分治解决,也叫时间分治。
线段树分治是一种离线做法,处理的是某种修改对询问的影响,这种影响可以独立也可以不独立。
关键是把一个修改看成一个区间,每个询问是一个叶子。修改是在线段树上打标记。这里把询问看做一个时间点,而修改对应一个时间区间的修改。
做法:在线段树上记录要操作的时间区间,dfs依次执行这一操作,一直到根节点来回答询问,离开时将其撤销。
题目: 有两种操作,一种是将两个点连一条边,另一种就是询问这个点所在的连通块的点数,但是这个边的有效时间只有k天。每次操作过一天。
分析: 如果没有有效时间的话,就是并查集的裸题。那么一次1操作本质上影响的是[i,i+k-1]这一时间段的答案。所以我们采用线段树分治,将每个操作都放到线段树的节点上,那么这个操作最多放在logn个节点上。最后我们对这棵线段树进行dfs,每次进入这个点就执行对应节点上的合并操作,一直到根节点回答询问,离开时撤销即可。所以还需要可撤销并查集。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值