1. 程式人生 > >892A. Greed#貪婪(優先隊列priority_queue)

892A. Greed#貪婪(優先隊列priority_queue)

如何 我們 百度 out ios pac 題目 names pri

題目出處: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”去百度

892A. Greed#貪婪(優先隊列priority_queue)