#include <iostream>
#include <algorithm>
using namespace std;
const int M = 11000;
struct Node{
int cost;
int y;
}node[M];
int n,s;
long long ans=0;
int main()
{
int Min;//当前 1 unit 的最小价钱
cin>>n>>s; //保存1 unit per week 要 s元
for(int i=0;i<n;i++)
{
cin>>node[i].cost>>node[i].y;
if(i==0)
{
Min=node[i].cost;
ans+=node[i].cost*node[i].y; //第一月只能由本月来生产
}
//不存在一部分其他月生产 一部分本月生产
// 生产每单位价钱不同 肯定用价钱最少的那个月生产
else //当前月生产的price 要么是本月的 要么是前面月份中的某一月份 price+k*s
{
Min=min(node[i].cost,Min+s); // s有累加
ans+=Min*node[i].y;
}
}
cout<<ans<<endl;
return 0;
}
poj 2393 贪心 思维
最新推荐文章于 2018-10-09 20:52:23 发布