文章

27

粉丝

86

获赞

10

访问

21.0k

头像
哈夫曼树 题解:C++ priority_queue
P1382 北京邮电大学/兰州大学2019年机试
发布于2023年8月22日 14:36
阅读数 933

C++

#include <iostream>
#include <queue>
#include <vector>
using namespace std;
int main(){
    int n;
    while(cin >> n){
        priority_queue<int, vector<int>, greater<int>> q;
        int num;
        for(int i = 0; i < n; i++){
            cin >> num;
            q.push(num);
        }
        int a, b, sum = 0;
        while(q.size() != 1){
            a = q.top();
            q.pop();
            b = q.top();
            q.pop();
            sum += a + b;
            q.push(a + b);
        }
        cout << sum << endl;
    }
    return 0;
}

 

登录查看完整内容


登录后发布评论

3 条评论
*洋
2024年1月13日 12:11

刚才发错了

 

赞(0)
*洋
2024年1月13日 11:25

错误的,这是树,不是加减,没有通过就不要发

 

赞(0)
122793160
2024年1月11日 19:16

请问为什么我写的数据不是全通过

 

#include<cstdio>
#include<queue>
using namespace std;
int main(){
    int n;
    scanf("%d",&n);
    priority_queue<long long,vector<long long>,greater<long long>  > q;
    for(int i=0;i<n;i++){
        long long temp;
        scanf("%d",&temp);
        q.push(temp);
    }
    long long sum=0;
    long long a,b;
    while(q.size()!=1){
        a=q.top();
        q.pop();
        b=q.top();
        q.pop();
        sum +=a+b;
        q.push(a+b);
        
    }
    printf("%lld\n",sum);
    return 0;
}
 

赞(0)