50pts求助
查看原帖
50pts求助
376169
jacky_bai楼主2023/11/19 19:39
#include<bits/stdc++.h>
using namespace std;
const int N=100000;
int a[N],b[N];   		//a为距离,b为价格  a[i]代表i-i+1距离 
int p,q;   //p为站数,q为每升油走多远 
int cnt; //余下的油走多远
long long pricecnt; 
int find(int k){
	for(int i=k;i<=p;i++)
		if(b[i]<b[k])
			return i;
	return p;
}
int price(int s,int t){
	int length=0;
	for(int i=s;i<t;i++)
		length+=a[i];
	int o=((length-cnt)/q);
	if(q*o+cnt<length)
		o++;
	cnt=cnt+o*q-length;
	return o*b[s];
}
void ann(int n){
	if(n==p)
		return;
	pricecnt+=price(n,find(n));
	ann(find(n));
} 
int main(){
	cin>>p>>q;
	for(int i=1;i<p;i++)
		cin>>a[i];
	for(int i=1;i<=p;i++)
		cin>>b[i];
	ann(1);
	cout<<pricecnt;
	return 0;
}

2023/11/19 19:39
加载中...