求大神指点
查看原帖
求大神指点
937942
wuhan123456楼主2023/11/1 19:12
#include<bits/stdc++.h>
#define int long long 
using namespace std;
int n,m;
int dp[100100];
int a[100100],b[100010],c,d,ans;
signed main(){
	ios::sync_with_stdio(false);
	cin>>n>>d;
	dp[0]=1e9;
	for(int i=1;i<n;i++){
		cin>>a[i];
	}
	for(int i=1;i<=n;i++){
		cin>>b[i];
		dp[i]=min(dp[i-1],b[i]);
	}
	double y;//y表示我每次买剩下的 
	for(int i=1;i<n;i++){
		if(dp[i]==dp[i+1]){
			c+=a[i];
		} 
		else{
			c+=a[i];
			if(c>=y){
				c-=y;
				y=0;
			}
			else{
				y=(y-c);
				continue; 
			}
			if(c%d==0){
				ans+=(c/d)*dp[i];
			}else{
				ans+=(ceil(c*1.0/d))*dp[i];
				y=ceil(c*1.0/d)-(c*1.0/d);
				y*=d;
			}
			c=0;
		}
	//	cout<<ans<<" ";
	}
	if(c){
		if(c%d==0){
				ans+=(c/d)*dp[n-1];
			}else{
				ans+=(ceil(c*1.0/d))*dp[n-1];
				y=ceil(c*1.0/d)-(c*1.0/d);
				y*=d;
			}
			c=0;
	}
	cout<<ans;
	return 0; 
}
2023/11/1 19:12
加载中...