贪心
1.判断先生产还是后生产
2.先生产的实际价格 = 后生产的价格 + 间隔时间 * 库存花费
3.记录编号来记录下一个开始的点
#include <iostream>
#include <cstdio>
#include <cstring>
using namespace std;
typedef long long ll;
struct yogurt
{
ll cost; //价格
ll need; //需求
}yg[10005];
ll solve(ll N,ll S){
ll ans = yg[0].cost * yg[0].need;
ll next = 0; //记录下一个开始
for(ll i = 1;i < N;i++){
ll cost2 = yg[next].cost + S * (i-next); //如果之前就生产的所需花费
if(cost2 >= yg[i].cost){ //比较何时生产合适
ans += yg[i].cost * yg[i].need;
next = i;
}
else{
ans = ans + cost2 * yg[i].need;
}
}
return ans;
}
int main(){
ll N,S;
while(~scanf("%lld%lld",&N,&S)){
for(ll i=0;i<N;++i){
scanf("%lld %lld",&yg[i].cost,&yg[i].need);
}
printf("%lld\n",solve(N,S));
}
return 0;
}