1 条题解

  • 0
    @ 2025-8-26 22:30:39

    不知优先队列是何物:

    其实优先队列就是在队列的基础上加了一些自动排序等好用的功能,就是定义队列麻烦点

    优先队列其实使用了堆的思想,定义优先队列方法:

    定义大顶堆
    ```cpp
     priority_queue<int> maxHeap;
    

    定义小顶堆

    priority_queue<int,vector<int>,greater<int>> minHeap;
    
    代码
    ```cpp
    #include <bits/stdc++.h>
    using namespace std;
    int main()
    {
        priority_queue<int,vector<int>,greater<int> > q;
        int n,sum = 0;
        cin>>n;
        for(int i=0;i<n;i++)
        {
            int num;
            cin>>num;
            q.push(num);
        }
        for(int i=1;i<=n-1;i++)
        {
            int first = q.top();
            q.pop();
            int second = q.top();
            q.pop();
            int sum0 = first+second;
            sum+=sum0;
            q.push(sum0);
        }
        cout<<sum;
    }
    
    • @ 2025-8-26 22:35:16

      顺便问一下管理员

      Compile Error 0ms 0KiB
      foo.cc: In function 'int main()':
      foo.cc:5:47: error: '>>' should be '> >' within a nested template argument list
          5 |     priority_queue<int,vector<int>,greater<int>> q;
            |                                               ^~
            |                                               > >
      

      这个报错信息是如果要写两个>,必须要空格分开写,像这样> >,这个不是C++11以下的要求吗,这个模式是C++98,为什么会报这种错???

信息

ID
162
时间
1000ms
内存
256MiB
难度
4
标签
递交数
42
已通过
19
上传者