90分的看过来,这道题的正确打开方式
查看原帖
90分的看过来,这道题的正确打开方式
1280055
xianzhaoyuzhe楼主2024/8/15 12:08
#include <bits/stdc++.h>
using namespace std;
int x[200005], y[200005], s[200005];
int n;
long double ans;
inline bool check(double k)
{
	long double sum = 0; 
	for (int i = 1 ; i <= n ; ++i)
	{
		sum += s[i]/k;
		if (sum > y[i]) return false; 
		if (sum < x[i]) sum = x[i]; 
	}
	return true; 
}
int main()
{
	cin >> n;
	for (int i = 1 ; i <= n ; ++i)
	 scanf("%d%d%d", &x[i], &y[i], &s[i]);
	long double l, r, mid;
	l = 0, r = 1e9;
	while (r-l>=0.00001)
	{
		mid = (l+r)/2;
		if (check(mid)) ans = mid, r = mid;
		else l = mid;
	}
	printf("%0.2Lf", ans);
	
    return 0;
}
2024/8/15 12:08
加载中...