求助!蒟蒻64分,几个点输出0.0000
查看原帖
求助!蒟蒻64分,几个点输出0.0000
895690
gghack_Nythix楼主2022/12/16 20:44
#include <bits/stdc++.h>
using namespace std;
long double a[1000005];
inline bool check(long double x,int n,long double k)
{
	long double sum = a[1] + x;
	for(int i = 2;i <= n;i ++)
	{
		if(a[i] - x - sum > k)
		{
			return false;
		}
		if(a[i] + x < sum)
		{
			sum += a[i] + x;
		}
		sum += k;
	}
	return true;
}
int main()
{
	long double k;
	int n;
	cin >> k >> n;
	for(int i = 1;i <= n;i ++)
	{
		cin >> a[i];
	}
	long double l2 = 0,r = a[n],mid,ans = 0;
	while(r - l2 >= 1e-10)
	{
		mid = (l2 + r) / 2.000;
		if(check(mid,n,k))
		{
			ans = mid;
			r = mid;
		}
		else
		{
			l2 = mid;
		}
	}
	cout << fixed << setprecision(3) << ans;
}

2022/12/16 20:44
加载中...