戴德兰

2387 戴德兰

 

牛牛非常喜欢赶deadline。
输入n, c, d
一共有n个任务,第i个任务需要a[i]分钟完成

特别的,在最后d分钟,牛牛的效率会变成双倍(耗时变为一半)

可能出现一个任务前半部分不在最后d分钟,后半部分在最后d分钟

那么只有在最后d分钟的后半部分效率会变为双倍。
牛牛希望在c分钟内完成的任务尽可能多,问最多可以完成多少个任务。
耗时变为一半,是不取整的,如果出现0.5,那么就是0.5。

对于100%的数据,1 <= n <= 10000, 1 <= d <= c <= 100000, 1 <= a[i] <= c。
对于40%的数据,1 <= n <= 20。
对于70%的数据,1 <= n <= 1000, 1 <= c <= 1000。

 

输入

输入第一行三个整数n, c, d。
接下来一行n个整数a[i]。

输出

输出一行一个整数,表示答案。

输入样例

4 10 5
8 10 1 2

输出样例

3
思路:最后d分分钟双倍相当于c加了d;
贪心从小到大完成任务
#include<iostream>
#include<algorithm>
using namespace std;
int a[10005];
int main(){
int n,c,d;
cin>>n>>c>>d;
c=c+d;
for(int i=1;i<=n;i++)
cin>>a[i];
sort(a+1,a+1+n);
int sum=0;
for(int i=1;i<=n;i++){
    if(c>a[i]){
        sum++;
        c-=a[i];
    }
    else
    break;
}
cout<<sum<<endl;
    return 0;
} 




原文地址:https://www.cnblogs.com/yfr2zaz/p/10741754.html