蓝桥杯训练营-奶酪工厂

题解

  这是一道贪心题,实话说,还是挺考思维的,感觉大部分贪心都挺考思维的...。

       首先这个题目的题意先要理解清楚,第 i 周 对应的单位奶酪价格为 ci,需交付 yi 的奶酪,而存储单位奶酪的价格 s 不会变化,可以进行奶酪存储。

       本题的策略为:

              价格比较,即之前单位奶酪的最低价 + 单位奶酪的存储价格 与 当前生产单位奶酪的价格 进行比较,然后不断更新当前单位奶酪的生产的最低价

              now = min(now + s, ci)

       核心为比较价格,即是要使用旧奶酪和新奶酪问题(不可能新旧奶酪同时使用)。

       

#include <iostream>
#include <algorithm>
using namespace std;

typedef long long LL;
int n, s;

int main()
{
    cin >> n >> s;
    LL ans = 0;
    int now = 0x3f3f3f3f;
    for (int i = 1; i <= n; ++i) {
        int c, y;
        cin >> c >> y;
        // 贪心策略
        // 关键为比较价格,即上一次价格的最低价 + s 和 当前生产一个单位的奶酪所需的价格
        // 即使用之前生产的奶酪还是现在生产的奶酪,这里没有对生产奶酪的数量进行限制 
        now = min(now + s, c);
        ans += (LL) now * y;
    }
    cout << ans << endl;
    return 0;
}

 

posted @ 2020-11-06 00:18  Fool_one  阅读(64)  评论(0编辑  收藏  举报