T2 95pts求调
  • 板块学术版
  • 楼主weibing
  • 当前回复0
  • 已保存回复0
  • 发布时间2023/10/21 21:23
  • 上次更新2023/11/2 12:07:59
查看原帖
T2 95pts求调
737072
weibing楼主2023/10/21 21:23
#include<bits/stdc++.h>
using namespace std;
long long s[100005],a[100005];
int main(){
	long long  n;
	long long d;
	double min1=-1;
	long long cnt=0;
	scanf("%lld%lld",&n,&d);
	for(int i=0;i<n-1;i++)
		scanf("%d",&s[i]);
	for(int i=0;i<n;i++)
		scanf("%d",&a[i]);
	for(int i=1;i<n;i++)
		min1=min(a[i],a[i-1]);
	if(a[0]==min1){
		double ju=0;
		for(int i=0;i<n;i++)
			ju+=s[i];
		cnt=cnt+ceil(ju/d)*min1;
		printf("%lld",cnt);
		return 0; 
	}
	long long j;
	double ju=0,you=0;
	for(int i=0;i<n-1;){
		for(j=i;a[i]<=a[j];j++){
			ju+=s[j];
		}
		you+=ceil(ju/d)-ju/d;
		long long youqian=(ceil(ju/d))*a[i];
		if(you>=1){
			youqian=(ceil(ju/d)-floor(you))*a[i];
			you-=floor(you); 
		}
		cnt+=youqian;
		i=j;
		ju=0;
	}
	printf("%lld",cnt);
	return 0;
}```
2023/10/21 21:23
加载中...