Description
给定一个长度为
对于物品,存在两种操作:
- 操作1:花费
的成本,买入一个种类 的物品。 - 操作2:花费
的成本,使所有物品种类 变动为 。
现在有
Constraints
Solution
至少有2个结论:
- 最多执行
次操作2。 - 第
次操作2时得到的成本为 。
这里的
因此不断维护
Code
class Solution {
public:
long long minCost(vector<int>& nums, int x) {
using L = long long;
auto n = nums.size();
auto ans = numeric_limits<L>::max();
vector mincosts(n, numeric_limits<int>::max());
for(int r = 0; r < n; ++r) {
for(int i = 0; i < n; ++i) {
mincosts[i] = min<L>(mincosts[i], nums[(i+r) % n]);
}
auto cost = accumulate(mincosts.begin(), mincosts.end(), L(r) * x);
ans = min(ans, cost);
}
return ans;
}
};