poj2393

题意:有n周,第i周:需要向外供货yi,生产1单位成本ci。若非本周生产的货物不在本周销售,需要贮藏,1单位贮藏一周需要花费s。问n周供货供需花费多少钱(成本和贮藏费)。

分析:贪心,我们用mini记录当前的最小单价,然后以最小单价买入,这个最小单价,要么是现在的单价,要么是之前的最小单价+贮藏费。mini中被替换掉的值是不可能是以后的最小单价的。因为现在被替换,同时+上若干个s之后它还是会比现在替换它的那个值大。

View Code
#include < iostream >
#include
< cstdio >
#include
< cstdlib >
#include
< cstring >
using namespace std;

int n, s;

int main()
{
// freopen("t.txt", "r", stdin);
scanf( " %d%d " , & n, & s);
int mini = 1000000000 ;
long long ans = 0 ;
for ( int i = 0 ; i < n; i ++ )
{
int c, y;
scanf(
" %d%d " , & c, & y);
if (mini > c)
mini
= c;
ans
+= (( long long ) (mini)) * y;
mini
+= s;
}
printf(
" %lld\n " , ans);
return 0 ;
}

你可能感兴趣的:(poj)