csp-j t2 80pts
  • 板块学术版
  • 楼主march_Wu175
  • 当前回复0
  • 已保存回复0
  • 发布时间2023/10/21 16:40
  • 上次更新2023/11/2 12:13:58
查看原帖
csp-j t2 80pts
725231
march_Wu175楼主2023/10/21 16:40
#include  <bits/stdc++.h>
using  namespace  std;
int  n,d;
long long  ans;
long long qz[100005];
int  a[100005],v[100005];
int  main(){
	 cin >>n>>d;
	 for(int i=1;i<n;i++){
	 	cin >>v[i];
	 	qz[i]=qz[i-1]+v[i];
	 }
//	 for(int i=1;i<n;i++) cout<<qz[i]<<endl;
	 for(int i=1;i<=n;i++)
	 	cin >>a[i];
	 long long num=0;
	 int t=1;
	 while(t<n){
	 	bool tf=false;
	 	for(int i=t+1;i<n;i++){
	 		if(a[i]<a[t]){
	 			tf=true;
	 			if(num>=(qz[i-1]-qz[t-1])){
	 				num-=(qz[i-1]-qz[t-1]);
	 				t=i;
				 }else{
				 	long long temp=ceil((qz[i-1]-qz[t-1]-num)*1.0/d);
				 	ans+=temp*a[t];
				 	num=temp*d%(qz[i-1]-qz[t-1]-num);
				 	t=i;
				 }
				 break;
			 	}
			 }
			 if(tf==false){
			 	if(num<(qz[n-1]-qz[t-1])){
			 		ans+=ceil((qz[n-1]-qz[t-1]-num)*1.0/d)*a[t];
			 		break;
				 }
			 }
	 	}
	 cout<<ans;
	 return  0;
}
2023/10/21 16:40
加载中...