25pts求助
查看原帖
25pts求助
821038
cuiyuchen楼主2023/12/24 20:28
#include<bits/stdc++.h>
using namespace std;
#define int long long
int n;
double d,oil,ans;
double a[100005],s[100005],c[100005];
signed main(){
	cin >> n >> d;
	s[1] = 0; 
	for(int i = 1;i <= n - 1;i++){
		int t;
		cin >> t;
		s[i] = t + s[i - 1];
	}
	int minn = INT_MAX;
	int p = 0;
	for(int i = 1;i <= n;i++){
	    cin >> a[i];
	    if(a[i] < minn && i != n){
	    	minn = a[i];
	    	c[++p] = i;
		}
	}
	c[p + 1] = n;
	for(int i = 2;i <= p + 1;i++){ 
		int now,next;
		now = c[i - 1];
		next = c[i];
		int sum = s[next - 1] - s[now - 1];
		if(oil * d < sum){
			ans = ans + ceil((sum - oil * d) / d) * a[now];
			oil += ceil((sum - oil * d) / d);
		}
		oil -= sum * 1.0 / d;
	}
	cout << ans << endl;
	return 0;
}

2023/12/24 20:28
加载中...