戴德兰
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];}elsebreak; } cout<<sum<<endl;return 0; }
?
轉載于:https://www.cnblogs.com/yfr2zaz/p/10741754.html
總結
- 上一篇: 值多少?
- 下一篇: 约束,索引,rownumrownum