50分,求调
查看原帖
50分,求调
1241536
hong__hua__miao楼主2025/7/18 18:38

代码如下

#include <bits/stdc++.h>
using namespace std;
int v[100002],a[100002],now,ans;
int n,d;
void f(int price,int road){
	int s = (road - now)/d;
	if (now + s * d < road) s++;
	now += s * d;
	ans += price * s;
}
int main(){
	scanf("%d%d",&n,&d);
	for (int i = 2; i <= n; ++i){
	scanf("%d",&v[i]);
	v[i] += v[i - 1];
}
	int k1 = 1e5 + 2,k2 = 1;
	for (int i = 1; i <= n; ++i){
	scanf("%d",&a[i]);
	if (k1 > a[i] && i != n){
	k1 = a[i];
	k2 = i;
}
}
	int i = 1,j = 1;
	while(j < k2){
	while(a[i] <= a[j])
	++j;
	f(a[i],v[j]);
	i = j;
}
	f(a[j],v[n]);
	printf("%d",ans);
	return 0;
}
2025/7/18 18:38
加载中...