15分求助,玄关
查看原帖
15分求助,玄关
1072191
huangmingyisunny楼主2023/11/20 17:52
#include<bits/stdc++.h>
#define int long long
using namespace std;
const int N=1e5+5;
int n,d;
int a[N],v[N];
int minn=1e18;
bool vis[N];
int money,have_koilmeter,need_koilmeter;
signed main(){
//	freopen("road2.in","r",stdin);
//	freopen("road.out","w",stdout);
	cin>>n>>d;
	for(int i=1;i<=n-1;i++){
		cin>>v[i];
	}
	for(int i=1;i<=n;i++){
		cin>>a[i];
		minn=min(minn,a[i]);
	}
	if(minn==a[1]){
		int s;
		for(int i=1;i<=n-1;i++){
			s+=v[i];
		}
		cout<<(d-1+s)/d*a[1];
		return 0;
	}
	for(int i=1;i<=n-1;i++){
		if(!vis[i]){
			need_koilmeter=v[i];
			for(int j=i+1;j<=n;j++){
				if(a[i]<=a[j]){
					vis[j]=1;
					need_koilmeter+=v[j];
//					cout<<v[j]<<" "<<need_koilmeter<<endl;
				}else{
					int nxt=have_koilmeter;
//					cout<<nxt<<" "<<money<<" "<<need_koilmeter<<" "<<have_koilmeter<<" "<<a[i]<<" "<<d<<" ";
					if(need_koilmeter%d==0){
						money+=need_koilmeter/d*a[i];
					}else{
						money+=(need_koilmeter-have_koilmeter+d-1)/d*a[i];
						have_koilmeter-=need_koilmeter;
						if(have_koilmeter<=0){
							have_koilmeter=0;
						}
					}
//					cout<<nxt<<" "<<money<<" "<<need_koilmeter<<" "<<have_koilmeter<<" "<<a[i]<<" "<<d<<" "<<i<<" "<<j<<endl;
					if((need_koilmeter-nxt+d-1)%d!=d-1){
						have_koilmeter+=(need_koilmeter+d-1)%d;
						need_koilmeter=0;
					}
					break;
				}
			}
		}
	}
	cout<<money;
	return 0;
}
2023/11/20 17:52
加载中...