卿學姐與魔法(優先隊列)
阿新 • • 發佈:2017-08-25
data cnblogs ace lns 學習 span sam emp frame
個人心得:思路很簡單,不過就是會超時,而且直接用數組的話肯定不夠大。
所以就用優先隊列,讓裏面只裝N個數就好了,然後再次添加時進行比較,比他小就放進去。
不過這樣超時,所以先將A,B排序,然後只要比隊首大就break就可以過了。
1 #include<iostream> 2 #include<cstdio> 3 #include<cstring> 4 #include<string> 5 #include<queue> 6 #include<algorithm> 7 using namespace std;8 int a[100005]; 9 int b[100005]; 10 int main() 11 { 12 int n; 13 scanf("%d",&n); 14 priority_queue<int >pq; 15 for(int i=1;i<=n;i++) scanf("%d",&a[i]); 16 for(int i=1;i<=n;i++) scanf("%d",&b[i]); 17 sort(a+1,a+n+1); 18 sort(b+1,b+n+1); 19 for(int i=1;i<=n;i++) 20 for(int j=1;j<=n;j++) 21 { 22 int t=a[i]+b[j]; 23 if(pq.size()==n&&t>pq.top()) 24 break; 25 if(pq.size()==n) 26 { 27 int x=pq.top(); 28 if(t<x) 29 { 30 pq.pop();31 pq.push(t); 32 } 33 } 34 else 35 pq.push(t); 36 37 } 38 int sum[100005]; 39 int t=n; 40 while(!pq.empty()) 41 { 42 int x=pq.top(); 43 sum[t--]=x; 44 pq.pop(); 45 } 46 for(int i=1;i<=n;i++) 47 printf("%d\n",sum[i]); 48 return 0; 49 50 }
“你的膜法也救不了你
在去拯救公主的道路上,卿學姐披荊斬棘,刀刃早已銹跡斑斑。
一日卿學姐正在為武器的問題發愁,碰到了正在賞樹的天行廖。
天行廖嘴角微揚,似乎看穿了卿學姐的心思,故意在此等待。
“少年,你渴望掌握雷電的力量嗎?”天行廖如是問道。
已經差不多是條鹹魚的卿學姐欣然答應了。於是卿學姐開始跟隨魔法大師天行廖學習魔法的力量。
剛入門的卿學姐發現,每個魔法都是由兩種基本元素構成的,A元素和B元素。
而每個魔法的魔力是合成這個魔法的A元素和B元素的大小的和。
例如一個大小為3的A元素和一個大小為6的B元素,能構成一個魔力為9的魔法。
現在卿學姐收集了NN個A元素和NN個B元素。
敏銳的卿學姐立刻發現他能組合出N?NN?N種魔法。
謙虛的卿學姐並不希望自己太跳,所以他準備將這N?NN?N種魔法中的最小的NN種展示給天行廖檢查。
現在卿學姐想知道,這N?NN?N種魔法中最小的NN種是什麽。
當然,得從小到大輸出哦~
Input
第一行一個整數NN
接下來一行有NN個數,表示NN個A元素
接下來一行有NN個數,表示NN個B元素
1≤N≤1000001≤N≤100000
1≤A[i],B[i]≤10000000001≤A[i],B[i]≤1000000000
Output
輸出NN行,每行一個整數
代表N?NN?N種魔法中最小的NN個
Sample input and output
Sample Input |
Sample Output |
---|---|
5 1 3 2 4 5 6 3 4 1 7 |
2 3 4 4 5 |
卿學姐與魔法(優先隊列)