Advertisement

上海计算机学会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)

还没有任何评论哟~