51nod 1001 陣列中和等於K的數對

2022-04-27 15:24:47 字數 998 閱讀 1678

1001 陣列中和等於k的數對

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

收藏關注給出乙個整數k和乙個無序陣列a,a的元素為n個互不相同的整數,找出陣列a中所有和等於k的數對。例如k = 8,陣列a:,所有和等於8的數對包括(-1,9),(0,8),(2,6),(3,5)。

input

第1行:用空格隔開的2個數,k n,n為a陣列的長度。(2 <= n <= 50000,-10^9 <= k <= 10^9)

第2 - n + 1行:a陣列的n個元素。(-10^9 <= a[i] <= 10^9)

output

第1 - m行:每行2個數,要求較小的數在前面,並且這m個數對按照較小的數公升序排列。

如果不存在任何一組解則輸出:no solution。

input示例

8 9-16

5342908

output示例

-1 9

0 82 6

3 5

題意:中文

思路:要找相加為k的數對,本菜的思路是先排序,然後從頭到尾進行取值用二分查詢它的另一半,使用過的資料標記一下

(貌似不用二分查詢也能過,但是二分的話明顯提高效率)

#include #include#include#includeusing namespace std;

const int maxn=5e4+10;

int k,n;

int a[maxn],b[maxn];

int tmp;

//採用二分搜尋解決

bool solve(int i)

else if(a[mid]+i>k>>n;

int flag=0;

for(int i=0;i>a[i];

}sort(a,a+n);

for(int i=0;i

51nod1001 陣列中和等於k的數對

1001 陣列中和等於k的數對 基準時間限制 1 秒 空間限制 131072 kb 分值 5 難度 1級演算法題 給出乙個整數k和乙個無序陣列a,a的元素為n個互不相同的整數,找出陣列a中所有和等於k的數對。例如k 8,陣列a 所有和等於8的數對包括 1,9 0,8 2,6 3,5 input 第1...

51Nod 1001 陣列中和等於K的數對

給出乙個整數k和乙個無序陣列a,a的元素為n個互不相同的整數,找出陣列a中所有和等於k的數對。例如k 8,陣列a 所有和等於8的數對包括 1,9 0,8 2,6 3,5 input 第1行 用空格隔開的2個數,k n,n為a陣列的長度。2 n 50000,10 9 k 10 9 第2 n 1行 a陣...

51Nod 1001 陣列中和等於K的數對

給出乙個整數k和乙個無序陣列a,a的元素為n個互不相同的整數,找出陣列a中所有和等於k的數對。例如k 8,陣列a 所有和等於8的數對包括 1,9 0,8 2,6 3,5 先將a進行排序,我們對a中的每個元素查詢對應的數對時,可以採用二分查詢,因為是順序排列了。剪枝 當a中的元素值的兩倍大於等於k時,...