T2不是贪心?还是我的思路有问题?
谷上90,小图灵40
#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
const int N=1e5+10;
ll n,d;
ll a[N],v[N];
int main(){
freopen("road.in","r",stdin);
freopen("road.out","w",stdout);
scanf("%lld%lld",&n,&d);
for(int i=1;i<n;++i)
scanf("%lld",&v[i]);
for(int i=1;i<=n;++i)
scanf("%lld",&a[i]);
ll res=0,bef=0;
for(int i=1;i<=n;){
ll k=i+1,sum=v[i];
while(a[k]>=a[i]&&k<=n){
sum+=v[k];
++k;
}
ll oil=(sum-bef)%d==0?(sum-bef)/d:(sum-bef)/d+1;
res+=oil*a[i];
bef=oil*d-(sum-bef);
i=k;
}
printf("%lld\n",res);
return 0;
}