满分了,但想看看能不能缩短一点
查看原帖
满分了,但想看看能不能缩短一点
976067
wczxluo楼主2023/12/26 19:01
#include<bits/stdc++.h>
using namespace std;
int main()
{
	long long n,m;
	long long a[100001];
	long long b[100001];
	long long c[100001];
	long long d[100001];
	long long qwe=0;
	cin>>n>>m;
	for(int i=1;i<=n-1;i++)
	{
		cin>>a[i];
		d[i]=d[i-1]+a[i];
	}
	for(int i=1;i<=n;i++)
	{
		cin>>b[i];
	}
	long long ans=0;
	long long num=0; 
	long long asd=0;
	long long sum=0;
	long long n1=0,n2=0,n3=0;
	for(int i=1;i<=n;i++)
	{
		for(int j=i+1;j<=n;j++)
		{
			if(b[i]>b[j])
			{
				num=(d[j-1]-d[i-1])/m;
				if(num*m<d[j-1]-d[i-1])
				{
					if(num*m+sum>=d[j-1]-d[i-1])
					{
						qwe=sum;
						num=num;
						sum=num*m+qwe-d[j-1]+d[i-1];
					} else {
						num++;
						sum+=num*m-d[j-1]+d[i-1];
					}
				}
				ans+=num*b[i];
				i=j;
				asd=0;
			}
			if(b[i]<=b[j])
			asd++;
			if(asd==n-i)
			{
				n1=(d[n-1]-d[i-1])/m;
				if(n1*m<d[n-1]-d[i-1])
				{
					if(n1*m+sum>=d[n-1]-d[i-1])
					{
						n1=n1;
					} else n1++;
				}
				ans+=n1*b[i];
				i=n;
			}
		}
	}
	cout<<ans;
	return 0;
}
2023/12/26 19:01
加载中...