892A. Greed#贪婪(优先队列priority_queue)

题目出处:http://codeforces.com/problemset/problem/892/A

题目大意:有一些可乐(不一定装满),问能不能把所有可乐装进两个可乐瓶中

#include<iostream>
#include<queue>
#include<vector>
using namespace std;
int main(){
    priority_queue< long long,vector<long long >,less<long long > >cap;
    long long n;    cin>>n;
    long long  sum=0;
    for(long long  i=0;i<n;i++){
        long long  rem; cin>>rem;
        sum+=rem;
    }
    while(n--){
        long long vol; cin>>vol;
        cap.push(vol);
    }
    long long  sumt = cap.top(); cap.pop();
    sumt+=cap.top();
    if(sum>sumt)cout<<"NO"<<endl;
    else cout<<"YES"<<endl;
    return 0;
}

只需要对剩余的可乐加和与最大的容积的两个可乐瓶容积加和比较即可

关键在于如何获取两个最大容积

暴力可以遍历一次之后,获得最大的一个,然后去掉这个,再遍历一次,再获得第二大的,加和

我们使用最大优先队列priority_queue();头文件#include<queue>

关于优先队列可以问度娘,建议加上“STL”去百度

posted @ 2017-12-17 15:43  hello_OK  阅读(274)  评论(0编辑  收藏  举报