动态规划做的,不知怎么35分
#include <cstdio>
#include <cstdlib>
#include <queue>
#include <cstring>
#include <cmath>
using namespace std;
int n,d,p[10001],f[10001],minprice[10001];
double v[10001];
int main()
{
freopen("road.in","r",stdin);
freopen("road.out","w",stdout);
memset(minprice,0x3f,sizeof(minprice));
scanf("%d%d",&n,&d);
v[1]=0;
for(int i=2;i<=n;i++)
scanf("%lf",&v[i]);
for(int i=1;i<=n;i++)
{
scanf("%d",&p[i]);
minprice[i]=min(minprice[i-1],p[i]);
}
f[1]=0;
for(int i=2;i<=n;i++)
{
f[i]=f[i-1]+ceil(v[i]/double(d))*minprice[i-1];
if(i+1<=n)v[i+1]-=(ceil(v[i]/double(d))-v[i]/double(d))*d;
}
printf("%d",f[n]);
return 0;
}