JZOJ6371. 【NOIP2019模拟2019.9.28】基础图论练习题

20 篇文章 0 订阅
2 篇文章 0 订阅

先打题解(思路)再打代码,因为这题实在挺难打。

Decription

  • 给定一个无向图,并且有q次操作,每一次加上或删去一条边。
  • 在操作前以及每一个操作后询问无向图中桥的个数。
  • n<=2e5,q<=4e5

Solution

  • 由于删除操作不好做,所以我们考虑只有加入操作的时候。
  • 如果一条边在时间[l,r]中存在,那么就将它加到线段树的对应区间中。
  • 考虑每条边在线段树上完全覆盖的最大区间中再加入。
  • 那么就有nlogn个区间有加入的操作。
  • 但是我们注意到点数可能会很大,也就是说我们不能暴力对于每一个节点都从上到下计算覆盖它的边的影响。
  • 考虑将加了边后的图缩成一个个的边双。再根据当前当前线段树上节点以及它的子树节点上挂的边中关系到的点建一颗虚树。
  • 其他的边双中的边如果在虚树上的两个点间就会对其的边权产生贡献。
  • 如果完全不会影响虚树中的点就直接统计贡献。
  • 这样的话从根往下维护边双的图就好了。
  • 虚树构建可以暴力建O(区间长度)
  • 复杂度O(nlogn)
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值