求调(有注释)
查看原帖
求调(有注释)
1046320
panbojun楼主2024/8/3 12:05
#include <bits/stdc++.h>
using namespace std;
const int N = 1e5 + 10;
int n, d, a[N], b[N], step;//step表示此时还能走多远 
int cheap = INT_MAX, ans;//cheap表示当前最便宜的油价,ans是最终答案 
int main(){
	cin >> n >> d;//d代表每升油可以前进的距离
	for(int i = 1; i <= n - 1; i++){
		cin >> b[i];//b[i]是距离 
	}
	for(int i = 1; i <= n; i++){
		cin >> a[i];//a[i]是油价 
	}
	cheap = a[1];
	for(int i = 1; i <= n - 1; i++){
		cheap = min(a[i + 1], cheap);//不断更新最便宜的油价
		if(step < b[i]) {
			int k = b[i] - step;//k代表还要走多远
			ans += cheap * (b[i] / d + 1);//把要走的路的油费加上 (每次仅仅加到刚好到下一站) 
			step += d * (b[i] / d + 1); //加上每次加完油后能够走的路 
		}
		step -= b[i];
	}
	cout << ans << '\n';
	return 0;
}
2024/8/3 12:05
加载中...