代码如下 第五个测试点错了(WA) 不确定原因
#include<bits/stdc++.h>
using namespace std;
long long n,d,cnt,ans,r,y;
long long v[100005],a[100005];
int main(){
cin>>n>>d;
for(int i=1;i<=n-1;i++){
cin>>v[i];
}
for(int i=1;i<=n;i++){
cin>>a[i];
}
y=a[1];
long long endd=1,o=1;
while(o<n){
for(long long i=o;i<=n+1;i++){
if(a[i]<y){
long long road;
for(long long j=o;j<i;j++){
road+=v[j];
}
if((road-r)%d==0){
cnt+=(road-r)/d*a[o];
r=0;
} else{
cnt+=((road-r)/d+1)*a[o];
r=r+((road-r)/d)*d+d-road;
}
y=a[i];
o=i;
road=0;
}
}
}
cout<<cnt;
return 0;
}
不过值得一提的是,在把for(long long i=o;i<=n+1;i++)中的n+1换成n时,会变成只有测试点5正确,其他tle(应该是死循环) 不知道有没有改变的方法 求大佬指点。