abc155D

ABC155D

題意

有一个长度为\(n\)的序列\(A\),从序列中任选两个数有\(n*(n-1)/2\)种方式,问两个数的乘积组成的非递减序列中的第\(k\)个数是多少?

数据范围

  • \(2 \le n \le 2*10^5\)
  • \(-10^9\le A_i\le10^9\)

题解

采用二分答案的方法。

坑点在于检查二分答案的过程中负数与负数相乘时导致的乘积单调性改变。

为降低复杂度,检查过程可以用双指针代替二分,总体复杂度少一个log

posted @ 2020-02-17 10:26  F_J  阅读(257)  评论(0编辑  收藏  举报