求助(玄关)
查看原帖
求助(玄关)
1062691
23232323w楼主2024/7/24 18:29
#include <bits/stdc++.h>
using namespace std;
#define ll long long
const int N = 1e5 + 10; 
inline ll read(){
	ll r = 0 , z = 1;
	char ch = getchar();
	while(ch < '0' || ch > '9'){
		if(ch == '-') z = -1;
		ch = getchar(); 
	}
	while(ch >= '0' && ch <= '9'){
		r = r * 10 + ch - '0';
		ch = getchar();
	}
	return r * z;
}
ll n , d , v[N] , a[N] , sum , ans;
int main(){
	n = read();
	d = read();
	for(int i = 1; i <= n - 1; i++){
		v[i] = read();
		sum += v[i];
	}
	for(int i = 1; i <= n; i++){
		a[i] = read();
	} 
	if(sum % a[1] == 0){
		sum = sum / d * a[1];
	}
	else{
		sum = (sum / d + 1) * a[1];
	}
	ll min1 = a[1] , x = 0 , fuck = 1;
	for(int i = 1; i <= n; i++){
		ans = 0;
		if(a[i] < min1){
			for(int j = fuck; j < i; j++){
				ans += v[j];//上一次换油和这次行驶相差的距离 
			}
			if(ans % d == 0){
				x += (ans / d) * min1;
				fuck = i;
			}
			else{
				x += (ans / d + 1) * min1;
				fuck = i;
			}
			min1 = a[i];
		}
	}
	cout << x;
}//先把油全部都加满,如果另外一个比它便宜的话减掉 
2024/7/24 18:29
加载中...