#include <iostream>
using namespace std;
const int N = 1e5+5;
long long n, d;
long long v[N], a[N];
long long cost;
long long min_ = 0x3f3f3f3f;
int min_index = 1;
int nums(int time,int left) {
// 返回需要加的油数
int i = (time-left);
int num = i/d;
if (i%d == 0) return num;
else return num+1;
}
int main() {
cin >> n >> d;
for (int i=1; i<n; i++) {
cin >> v[i];
}
for (int i=1; i<=n; i++) {
cin >> a[i];
}
int temp = nums(v[1], 0); // temp为需要加几升
cost = temp*a[1];
int left = temp*d - v[1]; // left为加完油跑完还剩几公里
for (int i=2; i<=n-1; i++) {
if (a[i]<min_)
{
min_ = a[i];
}
temp = nums(v[i], left);
cost += temp*min_;
left = temp*d + left - v[i];
}
cout << cost;
return 0;
}
https://www.luogu.com.cn/problem/P9749