30求救
查看原帖
30求救
993842
J_ALVAREZ楼主2023/11/3 13:01
#include <bits/stdc++.h>
using namespace std;
const int N=100005;
int n,d,i,a[N],v[N];
long long q,ans,distmp;
int main() {
	scanf("%d%d",&n,&d);
	for(i=1;i<n;i++)
		scanf("%d",&a[i]);
	for(i=1;i<=n;i++)
		scanf("%d",&v[i]);
	for(i=2;i<=n;i++) 
		if(v[i]>v[i-1])
			v[i]=v[i-1];
	for(i=1;i<n;i++) {
		int dis=a[i]-distmp; //need to do
		//v[i] means cost
		//a[i] means dis between last-now
		if(dis<=0) {
			distmp=-dis;
			continue;
		}
		if(dis%d==0) 
			q=dis/d;
		else q=dis/d+1;
		ans+=q*v[i];
		distmp=q*d-a[i];
	}
	printf("%lld",ans);
	return 0;
} 
2023/11/3 13:01
加载中...