本题乍看内容复杂,其实稍加分析便知可以用贪心的思想求解。酸奶厂一边生产的价格会变化,一边随着时间推移储存酸奶的费用不断增加。设第i周的酸奶生产+储存费用为p,如果第i周没有卖出则到第i+1周总费用为p+s,和第i+1周的生产费用可进行对比。依照上面的思路,则每次选在第i周前面周的酸奶总费用中最小的和本周生产作比较,选最小的费用乘上本周需求累加便得到结果。原题链接
#include <iostream>
using namespace std;
const int maxn=10001;
int main()
{
int n,s,c[maxn],y[maxn];
long long sum=0;
cin>>n>>s;
for(int i=0;i<n;i++) cin>>c[i]>>y[i];
for(int i=0;i<n;i++){
int least=1<<30;
for(int j=0;j<i;j++) c[j]+=s;
for(int j=0;j<=i;j++) least=min(least,c[j]);
sum+=y[i]*least;
}
cout<<sum<<endl;
return 0;
}