C++50分代码求指点(加了注释
查看原帖
C++50分代码求指点(加了注释
1178429
youshibaocuodeyitian楼主2024/7/25 21:18
#include<bits/stdc++.h>
using namespace std; 

int n,d;
int v[100100],a[100100];
int ans=0;

int j_l(int a,int b){
	int f=0;
	for(int i=a;i<b;i++) f+=v[i];
	return f; 
}//计算站点a,b之间的距离 

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];
    
    int k=1;//当前站点 
    int djl=0;//剩余油可以多行驶的距离 
    
    while(k<n){
    	int l=n;
    	int buy=0;//当前需要买的油数 
    	for(int i=k+1;i<=n;i++){
			if(a[i]<a[k]){
				l=i;
				break;
			}
		}//寻找去买油的下一站点l  
		
		int jl=j_l(k,l);
		
		jl-=djl;//距离 - 剩余油多行驶的距离 = 需要再买油行驶的距离 
		
		buy=(jl+d-1)/d;//买的油数 = 需要买油行驶的距离 / 每升油行驶的距离 (向上取整) 
		
		djl=buy*d-jl;//行驶到下一站后的多余距离  = 买的油行驶的距离 - 到下一站后的距离 
		
		//cout<<k<<" "<<buy<<" "<<buy*a[k]<<endl; 在第k站买了buy升油花了buy*a[k]元 
		
		ans+=buy*a[k]; //加一下花费 
		
		k=l;//更新下一站的起点 
	}
    cout<<ans;
    return 0;
}
2024/7/25 21:18
加载中...