#include <bits/stdc++.h>
using namespace std;
int a[100010],v[100010],sv[100010];
int main(){
int n,d,sumv=0,ans=0;
cin>>n>>d;
for(int i=1;i<n;i++){
cin>>v[i];
sumv+=v[i];
sv[i]=sv[i-1]+v[i];
}
for(int i=1;i<=n;i++){
cin>>a[i];
}
int cnt=ceil(sumv*1.0/d),cur=0,last=a[1];
for(int i=1;i<=cnt;i++){
if((i*d)-(sv[cur])>=d){
cur++;
last=min(last,a[cur]);
}
ans+=last;
}
cout<<ans<<endl;
return 0;
}
前缀和+贪心(有可能是复杂度的问题)
怎么调才能满分?
%%%