洛谷題目
這里使用的是優先隊列,非常簡單
首先讓我們一起來學習一下優先隊列(默認是從大到小來排列)
首先要使用頭文件
#include<queue>
using namespace std;
然后聲明有限隊列
priority_queue<int> a;
priority_queue<double> a;
這樣式的來聲明
然后來個復雜的
priority_queue<int, vector<int>,greater<int> > a;
這個式子的變量每一個變量代表分別是
隊列中存儲的元素的數據類型,底層使用的容器類型,還有決定容器的優先級(這里是從小到大)
然后還有這個隊列的一些使用函數
a.pop()彈出頂層元素
a.top()得到頂層元素
a.push(x)將x元素加入隊列
a.size()返回隊列的長度
a.empty() 查看隊列是否為空返回1或者0
然后再是代碼
#include<iostream>
#include<cstdio>
#include<algorithm>
#include<cmath>
using namespace std;
priority_queue<int,vector<int>,greater<int> > a;//隊列中元素的類型?
int main()
{int n,x,k,j,s=0;cin>>n;for(int i=0;i<n;i++){cin>>x;a.push(x);}?for(int i=0;i<n-1;i++)k=a.top();a.pop();j=a.top();a.pop();s+=k+j;a.push(k+j);}?return 0;
}?