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

2021-07-30 22:01:47 字數 1151 閱讀 1180

給出乙個整數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

-1 6

5 3

4 2

9 0

8 output示例

-1 9

0 8

2 6

3 5

1

#include

2#include

3using

namespace

std; 45

const

int n = 50005; 67

int k, n;

8int a[n];

910int main()

16 sort(a, a + n);

17bool flag = false;

18 i = 0; j = n - 1;

19while (i < j)

22else

if (n < k)

23else

24 }

25if (!flag)

26 }

為什麼我會說這是乙個值得紀念的日子,因為我真的感覺到了競賽的難點了,有的題,你也看得懂,有些思路,但是就是不對。需要優化什麼的。

這個答案呢,我看了之後很驚奇,因為我剛剛學會自己寫快速排序,看了前兩行,我以為是利用快排的思路寫的。看了答案我發現我對題目認識的還不到位,給定的集合互不相等,所以,乙個數字只用檢查一次就可以了,從兩頭不斷的逼近,最終就可以找到所有的了,真的很棒。看懂答案的那一刻,很開心。保持這份對未知的好奇心,我希望他可以讓我走得更遠。

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 先將a進行排序,我們對a中的每個元素查詢對應的數對時,可以採用二分查詢,因為是順序排列了。剪枝 當a中的元素值的兩倍大於等於k時,...

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