|洛谷|堆|P1631 序列合并

来源:互联网 发布:最难就业的专业 知乎 编辑:程序博客网 时间:2024/06/06 03:48

https://www.luogu.org/problem/show?pid=1631

在lrj的蓝书上有详细介绍

#include<cstdio>#include<algorithm>#include<cstring>#include<queue>#define ms(i,j) memset(i,j, sizeof i);using namespace std;int n;int A[100005], B[100005];struct node{       int sum;       int no;       node (int s, int n) : sum(s), no(n){}};struct cmp{       bool operator()(node a, node b)       {            return a.sum>b.sum;        }};int d[100005];priority_queue<node, vector<node>, cmp> p;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]);   for (int i=1;i<=n;i++)   {       d[i] = 1;       p.push(node(A[i]+B[d[i]], i));   }   int tot = 0;   while (tot<n)   {        node c = p.top();p.pop();        printf("%d ", c.sum);            d[c.no]++; tot++;        p.push(node(A[c.no]+B[d[c.no]], c.no));   }    return 0;}


0 0
原创粉丝点击