求助,第11个点开始一直往后错
查看原帖
求助,第11个点开始一直往后错
119265
渣渣炜楼主2023/11/25 00:23
#include<bits/stdc++.h>
using namespace std;
const int MAXN=1000000+10;
long long a[MAXN],b[MAXN],c[MAXN];
int main(){
	long long n,d;
	cin>>n>>d;
//	long long a[n+1],b[n+1],c[n+1];
//	memset(a,0,sizeof a);
//	memset(b,0,sizeof b);
//	memset(c,0,sizeof c);
	for(int i=1;i<n;i++){
		cin>>a[i];
		a[i]+=a[i-1];
	}
	long long minn=100000,p=0;
	for(int i=1;i<=n;i++){
		cin>>b[i];
		if(b[i]<minn)
			minn=b[i],c[p++]=i;	
	}
	if(c[p-1]!=n)c[p]=n;
		
	long long oil=0,sum=0;
	for(int i=0;c[i+1]!=0;i++){
		int now=c[i],next=c[i+1];
		int need=a[next-1]-a[now-1];
		if(need>=oil){
			sum+=ceil(1.0*(need-oil)/d)*b[now];
			oil+=ceil(1.0*(need-oil)/d)*d;
		}
		oil-=need;
	}
	cout<<sum;
	return 0;
}
2023/11/25 00:23
加载中...