牛客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-30 19:30
石家庄学院 Java
野蛮的柯基在游泳:都能入股了,还得是Java
点赞 评论 收藏
分享
评论
3
收藏
分享

创作者周榜

更多
牛客网
牛客企业服务