上海计算机学会2020年6月月赛C++丙组T4牛奶供应(一)
发布时间
阅读量:
阅读量
牧场每天生产一定数量的牛奶,并根据市场需求进行销售或存储。为了最大化利润并确保奶类不浪费,在每一步都优先处理保质期较短的库存,并及时出售剩余产品以避免变质。
步骤解释:
初始化变量:读取输入数据并初始化必要的变量和数据结构。
维护库存指针:使用变量 t 来跟踪当前最早未过期的奶瓶日期。
遍历每一天:对于每一天的数据进行分析和处理:
- 检查当前奶瓶是否已过保质期,并更新指针 t 到最早的未过期奶瓶日期。
- 处理当天的需求:尽可能多地利用现有奶瓶进行销售或补充新生产的奶瓶。
计算总售出量:累加所有成功售出的奶瓶数量作为最终结果输出。
通过这种方法确保每次尽可能高效地利用现有资源,并且严格遵守奶类保质期的规定。
最终答案如下:
解答代码
`cpp
#include <bits/stdc++.h>
using namespace std;
int main() {
int n, m;
long long ans = 0;
cin >> n >> m;
int p[n+1], c[n+1];
for (int i = 1; i <= n; ++i) {
cin >> p[i] >> c[i];
}
int t = 1; // 当前最早未过期的奶瓶编号
for (int i = 1; i <= n; ++i) {
// 更新最早未过期的奶瓶编号
if (i - m > t
题目描述
牧场每天都生产出一定数量的新鲜牛奶,在第i天的情况下(即某一天),牧场当天生产的牛奶总量为pi。这些新鲜奶制品被投入市场销售,在第i天当天的需求量为ci。如果当天的需求量不足以消化全部产量,则剩余的部分会被及时存入冷库里进行冷藏存储。需要注意的是,在奶产品的存储过程中存在一个严格的时间限制:如果存放时间超过了m天(其中m是一个预先设定好的整数值),则过期的产品将无法再进行销售处理。在具体的销售操作中应当遵循以下原则:优先处理存入冷库时间较长的一批次产品。
已知天数n及其每日的生产量和收购量,请计算或统计总牛奶产量。
输入格式
第一行:两个整数 n 和 m;
第二行到第 n+1 行:第 i+1 行每行两个整数表示 pi 和 ci。
输出格式
单个整数表示答案。
数据范围
- 对于 30% 的数据,1≤n,m≤1000;
- 对于 60% 的数据,1≤n,m≤10000;
- 对于 100% 的数据,1≤n,m≤100000;
- 0≤pi,ci≤10000。
样例数据
输入:
第一至第五天每天对应的牛奶数量分别为:
第1天:1,876升;
第2天:894升;
第3天:967升;
第4天:1,894升;
第5天:987升。输出:
最终计算得到的结果为:
9,476.83
第5到第7日均为库存状态未售出。
解析: 模拟法
将库存中最新鲜的那一批奶用变量t记录下来;一旦过了保质期的时间段,则将变量t设置为刚刚未过期的有效天数。
2.对于每天的需求,如果有库存;优先卖库存
3.最后卖当天生生产的
#include <bits/stdc++.h>
using namespace std;
int p[100005];
int c[100005];
int main() {
int n, m;
long long ans = 0;//答案:总售卖量
cin >> n >> m;
for (int i = 1; i <= n; i++) {
scanf("%d %d", &p[i], &c[i]);
}
int t = 1;//库存奶的最早日期
for (int i = 1; i <= n; i++) {
if (t < i - m) t = i - m;//如果库存超过保质期,改为最早未过期
while (c[i] > 0 && t <= i) {//有需求且有库存
if (p[t] <= c[i]) {//当天库存不足
ans += p[t];
c[i] -= p[t];
t++;
} else {//当天库存够用
ans += c[i];
p[t] -= c[i];
c[i] = 0;
}
}
}
cout << ans << endl;
return 0;
}
全部评论 (0)
还没有任何评论哟~
