1 条题解

  • 1

    思路

    考查 priority_queue (优先队列)的用法。 这道题是贪心,每次取出俩最小的,加起来为 tmptmp ,答案加上 tmptmp ,把 tmptmp 压进队列。

    code

    #include<bits/stdc++.h>
    using namespace std;
    priority_queue <int,vector<int>,greater<int> > q;//小根堆
    int main(){
    	int n,cost=0,min1,min2;
    	cin>>n;
    	while(n--){
    		int tem;
    		cin>>tem;
    		q.push(tem);
    	}
    	while(q.size()>1){ 
    		min1=q.top();
    		q.pop();
    		min2=q.top();
    		q.pop();
    		cost+=min1+min2;
    		q.push(min1+min2);
    	}
    	cout<<cost;
    	return 0;
    }
    
    • 1

    信息

    ID
    383
    时间
    1000ms
    内存
    256MiB
    难度
    10
    标签
    递交数
    2
    已通过
    2
    上传者