码迷,mamicode.com
首页 > 其他好文 > 详细

POJ_3627_贪心

时间:2016-09-03 12:00:41      阅读:122      评论:0      收藏:0      [点我收藏+]

标签:

题目描述:

  给你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;
}

 

POJ_3627_贪心

标签:

原文地址:http://www.cnblogs.com/zhurb/p/5836456.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!