poj2393
题意:有n周,第i周:需要向外供货yi,生产1单位成本ci。若非本周生产的货物不在本周销售,需要贮藏,1单位贮藏一周需要花费s。问n周供货供需花费多少钱(成本和贮藏费)。
分析:贪心,我们用mini记录当前的最小单价,然后以最小单价买入,这个最小单价,要么是现在的单价,要么是之前的最小单价+贮藏费。mini中被替换掉的值是不可能是以后的最小单价的。因为现在被替换,同时+上若干个s之后它还是会比现在替换它的那个值大。
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
#include <iostream>
#include <cstdio>
#include <cstdlib>
#include <cstring>
usingnamespace std;
int n, s;
int main()
{
//freopen("t.txt", "r", stdin);
scanf("%d%d", &n, &s);
int mini =1000000000;
longlong ans =0;
for (int i =0; i < n; i++)
{
int c, y;
scanf("%d%d", &c, &y);
if (mini > c)
mini = c;
ans += ((longlong) (mini)) * y;
mini += s;
}
printf("%lld\n", ans);
return0;
}
#include <cstdio>
#include <cstdlib>
#include <cstring>
usingnamespace std;
int n, s;
int main()
{
//freopen("t.txt", "r", stdin);
scanf("%d%d", &n, &s);
int mini =1000000000;
longlong ans =0;
for (int i =0; i < n; i++)
{
int c, y;
scanf("%d%d", &c, &y);
if (mini > c)
mini = c;
ans += ((longlong) (mini)) * y;
mini += s;
}
printf("%lld\n", ans);
return0;
}