题目描述:
给你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;
}