半片蛙声,大佬求调(50pt)
查看原帖
半片蛙声,大佬求调(50pt)
687911
chenyihao2011楼主2024/10/3 20:41

50pts代码:

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

const int N=1e5+10;
int n,d,dis,price[N],pre[N];
vector<int> v;
int main(){
	cin>>n>>d;
	for(int i=2;i<=n;i++){	
		scanf("%d",&dis);
		pre[i]=pre[i-1]+dis;
	}
	for(int i=1;i<=n;i++) scanf("%d",&price[i]);
	
	v.push_back(1);
	int minv=price[1];
	for(int i=2;i<=n;i++){
		if(minv>price[i]){
			v.push_back(i);
			minv=price[i];
		}
	}
	if(v[v.size()-1]!=n) v.push_back(n);
	
	int left=0,ans=0;
	for(int i=0;i<v.size()-1;i++){
		int real=pre[v[i+1]]-pre[v[i]];
		if(left>real) left-=real;
		else{
			real-=left;
			int num=ceil(real*1.0/d);
			ans+=price[v[i]]*num;
			left=num*d-real;
		}
	}
	cout<<ans;
 	return 0;
}
2024/10/3 20:41
加载中...