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)output第2 - n + 1行:每行2個數,分別是a[i]和b[i]。(1 <= a[i],b[i] <= 10^9)
輸出第k大的數。input示例
3 2output示例 91 22 3
3 4
思路:a[i]*b[i]範圍為a[1]*a[1]到a[n]*a[n],我們可以對其進行二分,然後對與每乙個mid在二分處有多少個大於等於它的數最終的出答案。
#include#include#include#include#include#includeusing namespace std;
#define ll long long
const int maxm = 50005;
ll inf = 1e18 + 7;
ll a[maxm], b[maxm];
int n;
ll query(ll k);
int main()
else
r = mid;
} printf("%lld\n", ans);
return 0;
}ll query(ll k)
return rev;
}
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中...