蓝桥杯训练营-奶酪工厂
题解
这是一道贪心题,实话说,还是挺考思维的,感觉大部分贪心都挺考思维的...。
首先这个题目的题意先要理解清楚,第 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; }