50分求调
查看原帖
50分求调
1334053
wsx_fish楼主2024/10/20 10:14
#include <bits/stdc++.h>
using namespace std;
int n,v;
double d;
long long ans;

struct aa{
	int s;
	int money;
}zd[100005];
int _min[100005];


int main(){
	cin>>n>>d;
    memset(_min,0x3f,sizeof(_min));
	//d*=1.0;
	zd[1].s=1;
	for(int i=2;i<=n;i++){
		cin>>v;
		zd[i].s=zd[i-1].s+v;
		//cout<<zd[i].s<<" ";
	}
	for(int i=1;i<=n;i++){
		cin>>v;
		zd[i].money=v;
		_min[i]=min(_min[i-1],v);
		//cout<<_min[i]<<" ";
	}
	int i=1;
	int wz=1;//现在的位置
	int go=0;//现在油量 
	while(wz<zd[n].s){
		wz+=go*d;
		go=0;
		//go=0;
		if(wz>=zd[i].s){
			i++;
		} 
		if(wz<zd[i].s){
			int x=zd[i].s-wz-go*d;
			double y=ceil(x/d);
			//cout<<"y"<<y<<endl;
			ans+=_min[i-1]*y;
			//cout<<"ans"<<ans<<endl;
			go+=y;
			//wz+=go*d;
		} 
		//cout<<wz<<" "<<i<<endl<<endl;
	}
	cout<<ans;
	return 0;
}
2024/10/20 10:14
加载中...