POJ_3627_贪心

题目描述:

  给你N个数和一个总和,要求求出最少个数的数相加大于等于这个总和。

思路:

  很简单的贪心,先排序,从大到小加一次,比较一次,直到符合条件。

  我用了优先队列,运行时间好像多了一倍= =

 

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

int main()
{
    priority_queue<int> a;
    int n,b;
    cin >> n >> b;
    while(n--)
    {
        int temp;
        cin >> temp;
        a.push(temp);
    }
    int sum = 0,num = 0;
    while(sum < b)
    {
        sum += a.top();
        a.pop();
        num++;
    }
    cout << num << endl;
}

 

posted @ 2016-09-03 10:50  zzzzzzzzhu  阅读(141)  评论(0编辑  收藏  举报