J T260pts求调
  • 板块学术版
  • 楼主HZHDCM
  • 当前回复3
  • 已保存回复3
  • 发布时间2023/10/22 09:19
  • 上次更新2023/11/2 12:01:21
查看原帖
J T260pts求调
817681
HZHDCM楼主2023/10/22 09:19
#include<bits/stdc++.h>
#define ll long long
using namespace std;
const int N=1e5+5;
ll n,d,ans,cnt,ans1;
ll a[N],v[N];
int main(){
	
	ios::sync_with_stdio(0);cin.tie(0);cout.tie(0);
	cin>>n>>d;
	for(int i=1;i<n;i++)cin>>v[i];
	for(int i=1;i<=n;i++)cin>>a[i];
	if(v[1]%d==0)
	    cnt=v[1]/d*a[1];
	else{
	    ans1=(v[1]/d+1)*d-v[1];
	    cnt=(v[1]/d+1)*a[1];
	}
	ll kobe=cnt;
	ll nn=cnt;
	ll yuan=a[1];
	for(int i=2;i<n;i++){
		v[i]-=ans1;
		ll op,kobe;
		if(v[i]%d==0){
			op=v[i]/d*a[i];
			kobe=v[i]/d*yuan;
			nn=min(op,kobe);
			if(kobe>op)yuan=a[i];
			cnt+=nn;
		}
		else{
			op=(v[i]/d+1)*a[i];
			kobe=(v[i]/d+1)*yuan;
			nn=min(op,kobe);
			if(kobe>op)yuan=a[i];
			cnt+=nn;
		}
		if(v[i]%d==0)ans1=0;
		else ans1=(v[i]/d+1)*d-v[i];
	}
	cout<<cnt;
	return 0;
}
2023/10/22 09:19
加载中...