#include<stdio.h>
#include<string.h>
using namespace std;
typedef long long ll;
struct node
{
ll p,num,id;//价格,数量,编号
}x[10005];
ll slove(ll n,ll s)
{
ll ans=x[0].p*x[0].num,kase=0;//kase代表最优解当天的id
for(ll i=1;i<n;++i)
{
ll tp=x[kase].p+s*(i-x[kase].id),cur=x[i].p;//一个是之前生产的实际价格,一个是当天生产的价格
if(tp<cur)//如果之前生产划算
//只需与之前一天比较因为如果他是最优解会一直被保持下去直到被新的最优解淘汰
{
ans+=tp*x[i].num;
}
else
{
ans+=cur*x[i].num;
kase=i;//更新最优解
}
}
return ans;
}
int main()
{
ll n,s;
while(~scanf("%lld%lld",&n,&s))
{
for(ll i=0;i<n;++i)
{
scanf("%lld%lld",&x[i].p,&x[i].num);
x[i].id=i;
}
printf("%lld\n",slove(n,s));
}
return 0;
}
奶酪工厂题解注释
最新推荐文章于 2021-11-03 21:20:37 发布