luogu 1631 序列合並
阿新 • • 發佈:2018-09-02
tor ret bit 下一個 元素 with reg gist prior
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; }
luogu 1631 序列合並