55分TLE求助
查看原帖
55分TLE求助
1051105
chenshihao20110204楼主2024/8/2 16:21

TLE了9个,求助

#include<iostream>
using namespace std;
int n,d,a[200000],v[200000],t=0;
long long ans;
int findNextCheapest(int x)
{
	if(x>0)
	{
		if(a[x]>=a[x-1]&&x!=findNextCheapest(x-1))
		{
			return findNextCheapest(x-1);
		}
	}
	int i; 
	for(i=x+1;i<n;i++)
	{
		if(a[i]<a[x])
		{
			return i;
		}
	}
	return i;
}
int main()
{
	cin>>n>>d;
	for(int i=0;i<n-1;i++) cin>>v[i];
	for(int i=0;i<n;i++) cin>>a[i];
	for(int i=0;i<n;)
	{
		long long s=0;
		for(int j=i;j<findNextCheapest(i);j++)
		{
			s+=v[j];
		}
		s-=t;
		t=0;
		ans+=((s+d-1)/d)*a[i];
		t=(s+d-1)/d*d-s;
		i=findNextCheapest(i);
	}
	cout<<ans;
} 
2024/8/2 16:21
加载中...