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

2021-12-29 22:43:08 字數 737 閱讀 9762

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

input第1行:用空格隔開的2個數,kn,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個數對按照較小的數公升序排列。

如果不存在任何一組解則輸出:nosolution。input示例89-16

5342

908output示例-19

0826

35題解:將查詢時的複雜度降到o(n)即可,o(n*n)會超時。 因為陣列中沒有重複的數字,那麼將大於等於k/2的值

變為k-n,再進行排序,當a[i]==a[i+1]時輸出。最後要判斷輸出 no solution .

**如下:

#include

#include

#include

using namespace std;

const int ma=50005;

struct node

num[ma];

int cmp(node a,node b)

{ if(a.n==b.n) return a.pre

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時,...