AcWing
  • 首页
  • 课程
  • 题库
  • 更多
    • 竞赛
    • 题解
    • 分享
    • 问答
    • 应用
    • 校园
  • 关闭
    历史记录
    清除记录
    猜你想搜
    AcWing热点
  • App
  • 登录/注册

大根堆&小根堆

作者: 作者的头像   Jackie_Gao ,  2024-10-30 23:30:37 ,  所有人可见 ,  阅读 111


0


对大根堆和小根堆定义的一些理解

priority_queue<,,>的三个参数分别指的是数据类型、底层容器、比较器

默认是大根堆,只需要传入int数据类型即可,容器和比较方式分别为vector[HTML_REMOVED]和less[HTML_REMOVED],是按照从大到小来排序
所以在定义大根堆时可以直接写成priority_queue[HTML_REMOVED] heap;从而省略容器类型和比较器
但是在定义小根堆时只能将三个参数全部加上,虽然中间的容器类型也是默认的vector
但是只省略第二个而加上第三个会导致函数引用出错

include <iostream>
include <cstring>
include <algorithm>
include <queue>
using namespace std;
int main()
{
    int n;
    cin >> n;
    priority_queue<int, vector<int>, greater<int>> heap;
    while(n --){
        int x;
        cin >> x;
        heap.push(x);
    }
    int ans;
    while(heap.size() > 1){
        int a = heap.top(); heap.pop();
        int b = heap.top(); heap.pop();
        ans += a + b;
        heap.push(a + b);
    }
    cout << ans;
    return 0;
}

0 评论

App 内打开
你确定删除吗?
1024
x

© 2018-2025 AcWing 版权所有  |  京ICP备2021015969号-2
用户协议  |  隐私政策  |  常见问题  |  联系我们
AcWing
请输入登录信息
更多登录方式: 微信图标 qq图标 qq图标
请输入绑定的邮箱地址
请输入注册信息