10pts求助,悬棺
查看原帖
10pts求助,悬棺
644924
613102wxllz楼主2024/8/13 15:07

详情

#include<bits/stdc++.h>
using namespace std;

int v[100010],a[100010],add[100010];
long long ans;

int main() {
	add[0]=1;
	int n,d,num=1,shen=0,now=1,zon=0;
	cin>>n>>d;
	a[num]=1;
	for(int i=2; i<=n; i++) {
		cin>>v[i];
		zon+=v[i];
	}
	for(int i=1; i<=n; i++) {
		cin>>a[i];
		if(i!=1&&a[i]<a[1]) {
			add[num]=i;
			num++;
		}
	}
	if(num==1) {
		cout<<ceil(zon*1.0/d)*a[1];
	} else {
		for(int i=1; i<num; i++) {
			int s=0;
			for(int j=now+1; j<=add[i]; j++) {
				s+=v[j];
			}
			now=add[i];
			s-=shen;
			shen=0;
			int y=0;
			if(s%d==0) {
				y=s/d;
			} else {
				y=ceil(s*1.0/d);
				shen=y*d-s;
			}
			ans+=y*a[add[i-1]];
		}
		cout<<ans;
	}
	return 0;
}
2024/8/13 15:07
加载中...