首页 > 其他 > 详细

POJ_3627_贪心

时间:2016-09-03 11:59:56      阅读:154      评论: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
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!