HHUOJ 1040
1040: 一起喝果汁
时间限制: 1 Sec 内存限制: 128 MB提交: 69 解决: 28
[提交][状态][讨论版][命题人:admin]
题目描述
kyoma和mirror都十分的爱喝果汁,于是她们在网上新买了一个榨汁机准备榨果汁喝。可是这个榨汁机的容量D十分有限,一次只能放进一个橙子,并且如果橙子的大小严格超过了B时就不能放进榨汁机。当榨汁机内的橙子大小大于等于榨汁机容量的时候,才能够榨出一杯果汁。榨完一杯果汁后,榨汁机就会清空。
现在她们俩买了N个橙子a1,a2,...,an,按照a1,a2,...,an的顺序放进榨汁机,那么她们最多能喝到多少杯果汁呢?
(假设橙子变为橙汁时质量体积均不变)
现在她们俩买了N个橙子a1,a2,...,an,按照a1,a2,...,an的顺序放进榨汁机,那么她们最多能喝到多少杯果汁呢?
(假设橙子变为橙汁时质量体积均不变)
输入
输入有多组测试数据(总数据不超过25组),直到文件末尾结束。
输入第一行有3个数字N(1<=N<=1000),B,D(1<=B<=D<=1000000);
N:表示有N个橙子。
B:榨汁机最大容纳的橙子大小。
D:榨汁机的容量
输入第二行有N个数字a1,a2,...,an(1<=ai<=10000),表示每个橙子的大小
输入第一行有3个数字N(1<=N<=1000),B,D(1<=B<=D<=1000000);
N:表示有N个橙子。
B:榨汁机最大容纳的橙子大小。
D:榨汁机的容量
输入第二行有N个数字a1,a2,...,an(1<=ai<=10000),表示每个橙子的大小
输出
每行输出一个数字,表示果汁的杯数。
样例输入
2 7 10
5 6
1 5 10
7
3 10 10
5 7 7
1 1 1
1
样例输出
1
0
1
1
提示
对于样例2:第一个橙子7>5,放不进榨汁机,因此喝到0杯果汁
对于样例3:第一个橙子放进后榨汁机内有5,第二个橙子放进后5+7>=10,榨出1杯果汁,榨汁机清空,第三个橙子放进后榨汁机内为7<10,不榨汁;因此总杯数为1。
stl解决,就是太慢了。。
#include <iostream> #include <stdio.h> #include <cstring> #include <deque> #include <algorithm> using namespace std; const int maxn = 1005; int n, b, d; int k ; int sz; int org[maxn]; deque<int> mac; bool s(deque<int> m) { int sum = 0; for (int i = 0; i != m.size(); ++i) { sum += m[i]; } if (sum >= d) return 1; else return 0; } int main(void) { while (scanf("%d%d%d", &n, &b, &d) != EOF) { k = 0; mac.clear(); int count = 0; memset(org, 0, sizeof(org)); int i; for (i = 0; i != n; ++i) { scanf("%d", &sz); if (sz <= b) { org[k] = sz; k++; } } if (k == 0) { cout << 0 << endl; continue; } else { for (i =0;i<k; i++) { mac.push_back(org[i]); if (s(mac)) { count++; mac.clear(); } } cout << count << endl; } } return 0; }