csp-j第二题90分求调
  • 板块学术版
  • 楼主jinhongyipie
  • 当前回复0
  • 已保存回复0
  • 发布时间2023/10/22 12:40
  • 上次更新2023/11/2 11:56:24
查看原帖
csp-j第二题90分求调
733676
jinhongyipie楼主2023/10/22 12:40
#include<bits/stdc++.h>
using namespace std;
long long sum[100010],jia[100010];
long long read()
{
	long long x=0;
	char c=getchar();
	while(c>'9'||c<'0') c=getchar();
	while(c>='0'&&c<='9')
	{
		x=(x<<3)+(x<<1)+(c^'0');
		c=getchar(); 
	}
	return x;
}
int main()
{
	int n;
	long long d;
	n=read();d=read();
	sum[1]=0;
	for(int i=2;i<=n;i++)
	{
		sum[i]=read();
		sum[i]+=sum[i-1];
	}
	for(int i=1;i<=n;i++)
		jia[i]=read();
	int s=1,f;
	long long ans=0,ti=0;
	f=s+1;
	while(s<=n)
	{
		while(jia[s]<jia[f]&&f<=n) f++;
		if(f>=n)
		{
			ans+=(sum[n]-sum[s]-ti)/d*jia[s];
			ti=(sum[n]-sum[s]-ti)%d;
			if(ti!=0) ans+=jia[s];
			printf("%lld",ans);
			return 0;
		}
		ans+=(sum[f]-sum[s]-ti)/d*jia[s];
		ti=(sum[f]-sum[s]-ti)%d;
		if(ti!=0)
		{
			ti=d-ti;
			ans+=jia[s];
		}
		s=f;
		f++;
	}
	return 0;
}
2023/10/22 12:40
加载中...