#106 (div.2) A. Business trip

来源:互联网 发布:投资入门知乎 编辑:程序博客网 时间:2024/05/23 05:09

1.题目描述:点击打开链接

2.解题思路:本题利用贪心法解决。首先对数组排序,由大到小选择,恰好大于等于k时候停止即可。如果全部相加仍然小于k,则无解。

3.代码:

#define _CRT_SECURE_NO_WARNINGS#include<iostream>#include<algorithm>#include<string>#include<sstream>#include<set>#include<vector>#include<stack>#include<map>#include<queue>#include<deque>#include<cstdlib>#include<cstdio>#include<cstring>#include<cmath>#include<ctime>#include<functional>using namespace std;#define me(s) memset(s,0,sizeof(s))typedef long long ll;typedef unsigned int uint;typedef unsigned long long ull;typedef pair <int, int> P;const int N=20;int a[N];int k;int main(){    while(~scanf("%d",&k))    {        for(int i=1;i<=12;i++)            scanf("%d",&a[i]);        sort(a+1,a+12+1);        int st=12,sum=0;        int ans=-1;        while(sum<k&&st>=1)        {            sum+=a[st--];        }        if(sum>=k&&st>=0)ans=12-st;        printf("%d\n",ans);    }}

0 0
原创粉丝点击