BZOJ3346 : Ural1811 Dual Sim Phone

首先将边进行去重,那么有$n\geq\sqrt{m}$。

然后二分答案,转化为判定是否存在两个点它们的出边集合的并集为全集。

那么这两个点必然满足$deg_x+deg_y\geq n$。

不妨设$deg_x\geq deg_y$,那么有$deg_x\times 2\geq n$。

考虑枚举$x$,最多只会有$O(\frac{m}{n})$个$x$。

再枚举$y$,有两种判定算法:

$1.$设$f[i][j]$表示$i$是否没有指向$j$,那么只要存在$f[x][j]\ and\ f[y][j]=true$即不可行。

可以压位计算,时间复杂度$O(\frac{nm}{32})$。

$2.$枚举$y$的所有出边,通过时间戳判定是否出现在$x$中。

时间复杂度$O(\frac{m^2}{n})$。

设$S$为阈值,当$n\leq S$时用算法1,否则用算法2,则有$\frac{Sm}{32}\leq\frac{m^2}{S}$。

当$S$取$\sqrt{32m}$时,取得最优复杂度$O(m\sqrt{\frac{m}{32}})$。

总时间复杂度$O(m\log m\sqrt{\frac{m}{32}})$。

 

  

posted @   Claris  阅读(374)  评论(0编辑  收藏  举报
努力加载评论中...
点击右上角即可分享
微信分享提示