題目描述
有兩個序列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個正整數,表述第二個數列。輸出格式 輸出檔案包含一...