标签:air gre 维度 [1] nbsp const 列合并 使用 pre
priority_queue的使用,注意
a[1]+b[1],a[1]+b[2],a[1]+b[3],a[1]+b[4].......a[1]+b[n]
a[2]+b[1].........
..
a[n]+b[1].......a[n]+b[n]
先放入每一行的第1个,a代表行,b代表列,弹出的值在哪一行,再新加入这一行的下一个元素
类似cdq减少维度
#include<bits/stdc++.h> #define rep(i,x,y) for(register int i=x;i<=y;i++) using namespace std; const int N=100050; int a[N],b[N],k[N],n; priority_queue<pair<int,int>,vector<pair<int,int> >,greater<pair<int,int> > >q; int main(){ ios::sync_with_stdio(false); cin>>n; rep(i,1,n) cin>>a[i]; rep(i,1,n){ cin>>b[i];k[i]=1; q.push(pair<int,int>(a[i]+b[1],i)); }while(n--){ pair<int,int> u=q.top();q.pop(); printf("%d ",u.first); int i=u.second; q.push(pair<int,int>(a[i]+b[++k[i]],i)); }return 0; }
标签:air gre 维度 [1] nbsp const 列合并 使用 pre
原文地址:https://www.cnblogs.com/asdic/p/9574011.html