|洛谷|堆|P1631 序列合并

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

在lrj的蓝书上有详细介绍

#include
#include
#include
#include
#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, 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


你可能感兴趣的:(树,-,堆,洛谷)