蒟蒻求助(播播)
查看原帖
蒟蒻求助(播播)
1060965
fanjiajun_U楼主2024/10/18 13:03
#include<bits/stdc++.h>
using namespace std;
const int N = 1e5+50;
int n,d,ans;
int v[N],a[N],zhui[N];
int sqc(int a,int b){//向上取整的除法
	if(a%b==0){
		return a/b;
	}else{
		return a/b+1;
	}
}
int main(){
	//输入流
	cin>>n>>d;
	for(int i=1;i<n;i++) cin>>v[i];
	for(int i=1;i<=n;i++) cin>>a[i];
	//计算买油地点
	vector<int> vec;
	vec.push_back(1);
	for(int i=1;i<=n;i++){
		int lin = a[i];
		for(int j=i;j<n;j++){
			if(lin>a[j]){
				i=j;
				vec.push_back(j);
				break;
			}
		}
	}
	vec.push_back(n);
	int v_s = vec.size();
//	cout<<"v_s: "<<v_s<<endl;
	//路程前缀和
	for(int i=2;i<=n;i++){
		zhui[i] = zhui[i-1]+v[i-1];
	}
	//买多的油跑的路程
	int sheng=0;
	for(int i=0;i<v_s-1;i++){	//计算答案
		int ju = zhui[vec[i+1]]-zhui[vec[i]]-sheng;
		sheng = ju%d;
		ans+=sqc(ju,d)*a[vec[i]];		
//		cerr<<"ans: "<<ans<<" "<<ju<<" "<<zhui[vec[i+1]]<<" "<<zhui[vec[i]]<<" "<<" "<<sheng<<" "<<endl;
	}
	//输出结果
	cout<<ans;
	return 0;
}
/*
4 6279
90560 55497 63624
171 103 126 112

4522
*/
2024/10/18 13:03
加载中...