有兩個長度都是n的序列a和b,在a和b中各取乙個數相加可以得到n^2個和,求這n^2個和中最小的n個。
輸入格式:
第一行乙個正整數n;
第二行n個整數ai,滿足ai<=ai+1且ai<=10^9;
第三行n個整數bi, 滿足bi<=bi+1且bi<=10^9.
【資料規模】
對於50%的資料中,滿足1<=n<=1000;
對於100%的資料中,滿足1<=n<=100000。
輸出格式:
輸出僅一行,包含n個整數,從小到大輸出這n個最小的和,相鄰數字之間用空格隔開。
輸入樣例#1:複製
32 6 6
1 4 8
輸出樣例#1:複製
3 6 7
a[x]+b[y]a[x]+b[y]並且具有緊密性;
所以最開始在優先佇列中加入a[1]+b[1](必然是最小的);
每次取出最小元素a[x]+b[y]輸出,並再加入a[x+1]+b[y], a[x]+b[y+1];
!注意判重;
1 #include2 #include3 #include4const
int maxn=1e5+10;5
intn,a[maxn],b[maxn];
6 std::maplong,bool>v;
7struct
nate
10};
11struct comp};
12int
main()
27return0;
28 }
洛谷 P1631 序列合併
題目描述 有兩個長度都是n的序列a和b,在a和b中各取乙個數相加可以得到n 2個和,求這n 2個和中最小的n個。輸入輸出格式 輸入格式 第一行乙個正整數n 第二行n個整數ai,滿足ai ai 1且ai 10 9 第三行n個整數bi,滿足bi bi 1且bi 10 9.資料規模 對於50 的資料中,滿...
洛谷 P1631 序列合併
有兩個長度都是n的序列a和b,在a和b中各取乙個數相加可以得到n 2個和,求這n 2個和中最小的n個。第一行乙個正整數n 第二行n個整數ai,滿足ai ai 1且ai 10 9 第三行n個整數bi,滿足bi bi 1且bi 10 9.輸出僅一行,包含n個整數,從小到大輸出這n個最小的和,相鄰數字之間...
洛谷P1631 序列合併
序列合併 問題描述 有兩個長度都是n的序列a和b,在a和b中各取乙個數相加可以得到n 2個和,求這n 2個和中最小的n個 n 100000 分析 a i 與b j 相加後,下面相加的一定是a i 1 b j 或a i b j 1 一開始我們把b 1 與a中所有元素相加放入乙個小根堆裡,輸出min,然...