贪心,答案不对,不知道哪里G了
查看原帖
贪心,答案不对,不知道哪里G了
1039274
Cypher_404楼主2024/6/22 08:07
#include<bits/stdc++.h>
using namespace std;
#define int long long
int a[100010],b[100010],sum,minn,n;
double ys;
double q;
signed main()
{
	cin>>n>>q;
	for(int i=1;i<n;i++)
	{
		scanf("%lld",&a[i]);
	}
	for(int i=1;i<=n;i++)
	{
		scanf("%lld",&b[i]);
	}
	minn=1;
	double v=0;
//	cout<<ceil(3/2);
	for(int i=1;i<=n;i++)
	{
		if(b[minn]>b[i])
		{
//			int calc;
			if(v<=ys)
			{
				ys-=v;
				continue;
			}
			int dis=(int)((double)(v-ys)/q+0.5);
			ys=dis*q-v;
			
			sum+=(dis)*b[minn];
//			v=0;
			minn=i;
//			cout<<(dis)*b[minn]<<' ';
			v=0;
		}
		v+=a[i];
//		cout<<v<<' ';
//		cout<<i<<' ';
	}
	if(v!=0)
	{
		if(v<=ys)
		{
			ys-=v;
			goto fuck;
		}
		sum+=ceil((v-ys)/q)*b[minn];
		v=0;
	}
	fuck:;
	cout<<sum;
	return 0;
}
2024/6/22 08:07
加载中...