HDU 6621"K-th Closest Distance"(二分+主席树)

传送门

•题意

  有 $m$ 次询问,每次询问求 $n$ 个数中, $[L,R]$ 区间距 $p$ 第 $k$ 近的数与 $p$ 差值的绝对值;

•题解

  二分答案,假设当前二分的答案为 $x$,那么如何判断 $x$ 是否可以呢?

  只需判断 $[L,R]$ 区间值在 $[p-x,p+x]$ 的数的个数 $sum$ 是否大于等于 k 即可;

  如果 $sum \geq k$,那么,x 大了,需要减小范围,反之,需要增大范围;

  如何快速求解 $[L,R]$ 区间值在 $[p-x,p+x]$ 的数的个数呢?

  这就是主席树的板板题了;

  时间见复杂度为 $O(m\cdot log(10^6)\cdot log(10^6))$,而本题给了 $15s$,完全可以过;

•Code

  HDU6621.cpp

猜你喜欢

转载自www.cnblogs.com/violet-acmer/p/11705086.html