码迷,mamicode.com
首页 > 其他好文 > 详细

[AGC002 D]Stamp Rally

时间:2018-05-04 14:04:07      阅读:100      评论:0      收藏:0      [点我收藏+]

标签:二分   最小   log   时间   直接   时间复杂度   暴力   分析   节点   

题意

给出一个\(N\)个点\(M\)条边的无向图,还有\(Q\)个询问,每次询问给出两个节点\(x_i\)\(y_i\),要求必须从这两个点出发总共访问至少\(z_i\)个点(包括\(x_i\)\(y_i\)),要求最小化访问到的最大编号的边的编号,并输出这个编号。

  • \(3\leq N \leq 10^5\)
  • \(N-1\leq M\leq 10^5\)
  • \(1\leq Q\leq 10^5\)

分析

先考虑一种最为暴力的做法,我们先考虑第\(i\)个询问,我们依次从\(1\cdots M\)加入边,然后判定一下\(x_i\)\(y_i\)的连通分量(两个或者一个)是否能够访问到一共\(z_i\)个点,然后就可以直接找到了。

考虑\(Q\)个如果暴力计算肯定非常浪费,我们考虑既然是最小化最大值,那应该可以考虑对于编号的权值进行整体二分,我们考虑要依次计算每一层从左到右的贡献(开头的还需要清空),那么就是整体二分的裸题了,我们判定一下这区间里面的答案在哪里,就可以递归下去计算了。

时间复杂度,由于每一层是\(\text O(M)\),每一个询问在每一层最多被计算一次,那么就是\(\text O((M+Q)\log M)\)的。

[AGC002 D]Stamp Rally

标签:二分   最小   log   时间   直接   时间复杂度   暴力   分析   节点   

原文地址:https://www.cnblogs.com/wendavid/p/8990040.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!