题解 AT2653 【Snake Toy】

2018-04-05 23:08:03


使用优先队列解决这个问题

#include<cstdio>
#include<iostream>
#include<queue>
#include<algorithm>
#include<vector>
using namespace std;

priority_queue<int, vector<int>, less<int> > q; //新建一个从大到小的优先队列

int main(){
    ios::sync_with_stdio(false); //读入读出优化
    int n,m,tmp,ans=0;
    cin>>n>>m;
    for(int i=0;i<n;++i){
        cin>>tmp;
        q.push(tmp); //入队
    }
    for(int i=0;i<m;++i){
        ans+=q.top(); //加前m个元素
        q.pop();
    }
    cout<<ans<<endl; //输出
    return 0;
}

一些优先队列的解析:https://www.aptx.xin/queue.html