HNUCM 1315 第K大數 二分

2021-09-16 21:20:05 字數 989 閱讀 9545

題目描述

有兩個序列a,b,它們的長度分別為n和m,那麼將兩個序列中的元素對應相乘後得到的n*m個元素從大到小排列後的第k個元素是什麼? 輸入

輸入的第一行為乙個正整數t (t<=10),代表一共有t組測試資料。

每組測試資料的第一行有三個正整數n,m和k(1<=n, m<=100000,1<=k<=n*m),分別代表a序列的長度,b序列的長度,以及所求元素的下標。第二行為n個正整數代表序列a。第三行為m個正整數代表序列b。序列中所有元素的大小滿足[1,100000]。 輸出

對於每組測試資料,輸出一行包含乙個整數代表第k大的元素是多少。

樣例輸入 

3 2 3

1 2 3

1 22 2 1

1 11 1

2 2 4

1 11 1

樣例輸出 

1

1

二分搜尋:

最大邊界:arr1[n - 1] * arr2[m - 1],最小邊界arr1[0] * arr2[0](排序後)

#include #include #include #include #include #include #include #include #include #include #include #include using namespace std;

typedef long long ll;

static const int max_n = 1e5 + 5;

int arr1[max_n], arr2[max_n]; //陣列就開int,開ll輸入會超時

ll get_sum(ll v, int n, int m)

return ret;

}int main()

printf("%lld\n", l);

} return 0;

}

第k大數 二分法

時間限制 10 sec 記憶體限制 128 mb 有兩個序列a,b,它們的長度分別為n和m,那麼將兩個序列中的元素對應相乘後得到的n m個元素從大到小排列後的第k個元素是什麼?輸入的第一行為乙個正整數t t 10 代表一共有t組測試資料。每組測試資料的第一行有三個正整數n,m和k 1 n,m 100...

第K小數(二分)

問題描述 有兩個正整數數列,元素個數分別為n和m。從兩個數列中分別任取乙個數 相乘,這樣一共可以得到nm個數,詢問這nm個數中第k小數是多少。輸入格式 輸入檔名為number.in。輸入檔案包含三行。第一行為三個正整數n,m和k。第二行為n個正整數,表示第乙個數列。第三行為m個正整數,表述第二個數列...

第K小數(二分)

問題描述 有兩個正整數數列,元素個數分別為n和m。從兩個數列中分別任取乙個數 相乘,這樣一共可以得到n m個數,詢問這n m個數中第k小數是多少。輸入格式 輸入檔案包含三行。第一行為三個正整數n,m和k。第二行為n個正整數,表示第乙個數列。第三行為m個正整數,表述第二個數列。輸出格式 輸出檔案包含一...