牛客NOIP暑期七天营-普及组6-B-Bunny的任务

Bunny的任务

https://ac.nowcoder.com/acm/contest/930/B

题目大意:n个任务,给你t的时间,最多做多少个?

选出来的任务时间之后不超过t即可。

假设答案是k个任务,如果其他任务的时间更小,换一个时间更短的任务进来,不影响答案,且花时间只会更少、更好!

因此,我们可以选最短时间的k个任务。

排序,贪心选择即可。

注意:累加可能爆long long,用减法代替加法可避免此问题。

#include <bits/stdc++.h>
using namespace std;
long long n, m, i, j, k, a[1000005];
int main(){
    scanf("%lld%lld", &m, &n);
    for(i=1; i<=n; i++){
        scanf("%lld", &a[i]);
    }
    sort(a+1, a+n+1);
    for(i=1; i<=n; i++){
        if(a[i] <= m) m -= a[i];
        else break;
    }
    printf("%lld\n", i-1);
    return 0;
}
全部评论

相关推荐

03-29 14:19
门头沟学院 Java
你背过凌晨4点的八股文么:加油同学,人生的容错率很高,只是一个暑期罢了,后面还有很多机会!
点赞 评论 收藏
分享
喜欢疯狂星期四的猫头鹰在研究求职打法:短作业优先
点赞 评论 收藏
分享
评论
3
收藏
分享

创作者周榜

更多
牛客网
牛客企业服务