警示后人
查看原帖
警示后人
535287
Cyh1234321楼主2024/8/31 15:10

如果代码形如此下

#include<bits/stdc++.h>
#define int long long
using namespace std;
int n,d,dis;
int di[100010];
int a[100010],b[100010];
int seil(int a,int b){
	if(a%b)return a/b+1;
	return a/b;
}
signed main(){
	cin>>n>>d;
	for(int i=2;i<=n;i++){
		cin>>di[i];
		di[i]=di[i-1]+di[i];
	}
	int j=1;
	for(int i=1;i<=n;i++){
		cin>>a[i];
		if(a[i]<a[j])b[j]=i,j=i;
	}
	int u=1;
	int cost=0;
	while(u<n){
		int v=b[u];
		dis-=(di[v]-di[u]);
		if(dis<0){
			int x=seil(abs(dis),d);
			cost=cost+x*a[u];
			dis=dis+x*d;
		}
		u=v;
	}
	cout<<cost<<'\n';
}

pAEr524.md.png

很有可能需要特判起点加油站便是最便宜的

2024/8/31 15:10
加载中...