1105 第K大的數 二分

2022-04-11 02:02:17 字數 1202 閱讀 8557

1105 第k大的數

基準時間限制:1 秒 空間限制:131072 kb 分值: 40 難度:4級演算法題

陣列a和陣列b,裡面都有n個整數。陣列c共有n^2個整數,分別是a[0] * b[0],a[0] * b[1] ......a[1] * b[0],a[1] * b[1]......a[n - 1] * b[n - 1](陣列a同陣列b的組合)。求陣列c中第k大的數。

例如:a:1 2 3,b:2 3 4。a與b組合成的c包括2 3 4 4 6 8 6 9 12共9個數。

input

第1行:2個數n和k,中間用空格分隔。n為陣列的長度,k對應第k大的數。(2 <= n <= 50000,1 <= k <= 10^9)

第2 - n + 1行:每行2個數,分別是a[i]和b[i]。(1 <= a[i],b[i] <= 10^9)

output

輸出第k大的數。
input示例

3 2

1 22 3

3 4

output示例

9

//將兩個陣列排序後,二分答案,因為對於 a 中每個數,b 乘之也是單調的,所以又可以二分

所以,o(log(1e18)*n*lg(n)) 即可

1 #include 2

using

namespace

std;

3#define mod 1000000007

4#define inf 0x3f3f3f3f

5#define eps 1e-9

6#define ll long long

7#define mx 5000589

ll n,k;

10ll a[mx], b[mx];

1112

ll check(ll x)

1325 tot+=j;26}

27return

tot;28}

2930

intmain()

3149

else l = mid+1;50

}51 printf("

%lld\n

",ans);52}

53return0;

54 }

view code

1105 第K大的數 二分搜尋

1105 第k大的數 基準時間限制 1 秒 空間限制 131072 kb 分值 40 難度 4級演算法題 陣列a和陣列b,裡面都有n個整數。陣列c共有n 2個整數,分別是a 0 b 0 a 0 b 1 a 1 b 0 a 1 b 1 a n 1 b n 1 陣列a同陣列b的組合 求陣列c中第k大的數...

1105 第K大的數 思維,二分)

陣列a和陣列b,裡面都有n個整數。陣列c共有n 2個整數,分別是 a 0 b 0 a 0 b 1 a 0 b n 1 a 1 b 0 a 1 b 1 a 1 b n 1 a n 1 b 0 a n 1 b 1 a n 1 b n 1 是陣列a同陣列b的組合,求陣列c中第k大的數。例如 a 1 2 3...

51NOD 1105 第K大的數 二分

1105 第k大的數 基準時間限制 1 秒 空間限制 131072 kb 分值 40 難度 4級演算法題 收藏關注 陣列a和陣列b,裡面都有n個整數。陣列c共有n 2個整數,分別是a 0 b 0 a 0 b 1 a 1 b 0 a 1 b 1 a n 1 b n 1 陣列a同陣列b的組合 求陣列c中...