日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

K - 十日游戏

發布時間:2025/3/21 编程问答 41 豆豆
生活随笔 收集整理的這篇文章主要介紹了 K - 十日游戏 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

Description

在宇宙中存在著一種神秘的暗物質魔法球。這種魔法球分為陰球和陽球,當兩種球合并時就會釋放出巨大的能量。 每個球都有一個魔法值。現在給定你n對魔法球,請你找出所有的組合中魔法值最大的n種。 ( 組合意思是指一個陰球和一個陽球結合,魔法值為兩球之和,每個魔法球可以使用多次。)
Input

單組輸入。 第一行為兩個整數n(1<=n<=1e5) 第二行為n個整數,代表n個陽球的魔法值,每個整數值范圍(1-1e7)。 第三行為n個整數,代表n個陰球的魔法值,每個整數值范圍(1-1e7)。
Output

輸出1行,為n個由空格分割的整數,即為最后所求答案,最后一個整數后無空格。
Sample
Input

5 1 2 5 3 4 1 2 3 4 5

Output

10 9 9 8 8 #include <bits/stdc++.h> using namespace std; const int MAXN = 100005; int a[MAXN], b[MAXN], ans[MAXN]; int n; void sift_down(int i) {int t;while (i <= n / 2) {if (ans[i] > ans[i * 2])t = i * 2;elset = i;if (i * 2 + 1 <= n && ans[t] > ans[i * 2 + 1]) t = i * 2 + 1;if (i != t) {int x = ans[i];ans[i] = ans[t];ans[t] = x;i = t;} else {break;}} } int main() {scanf("%d", &n);for (int i = 1; i <= n; i++) scanf("%d", &a[i]);for (int i = 1; i <= n; i++) scanf("%d", &b[i]);sort(a + 1, a + n + 1);sort(b + 1, b + n + 1);for (int i = 1; i <= n; i++) {ans[i] = a[i] + b[n];}for (int i = n; i >= 1; i--) {int f = 1;for (int j = n - 1; j >= 1; j--) {if (a[i] + b[j] > ans[1]) {f = 0;ans[1] = a[i] + b[j];sift_down(1);}}if (f == 1) break;}sort(ans + 1, ans + n + 1);for (int i = n; i > 1; i--) printf("%d ", ans[i]);printf("%d\n", ans[1]);return 0; }

總結

以上是生活随笔為你收集整理的K - 十日游戏的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。