long double -> double
```cpp
#include <iostream>
#include <cstdio>
#include <cstring>
using namespace std;
const int N = 2e5 + 5;
int n;
double ans;
struct node
{
int x, y, s;
} pos[N];
bool check(long double mid)
{
long double sum = 0;
for (int i = 1; i <= n; i++)
{
sum += (long double)pos[i].s / mid;
if (sum > pos[i].y)
return false;
if (sum < pos[i].x)
sum = pos[i].x;
}
return true;
}
int main()
{
scanf("%d", &n);
for (int i = 1; i <= n; i++)
{
scanf("%d%d%d", &pos[i].x, &pos[i].y, &pos[i].s);
}
long double l = 0, r = 1e9;
while (r - l >= 0.00001)
{
double mid = (l + r) / 2;
if (check(mid))
{
r = mid;
ans = mid;
// printf("%lf\n",ans);
}
else
l = mid;
}
printf("%.2lf", ans);
system("pause");
return 0;
}
```
by smyslenny @ 2021-10-07 22:45:38
或者
输出 lf-> Lf
long double 需要大写 L
```cpp
#include<iostream>
#include<cstdio>
#include<cstring>
using namespace std;
const int N=2e5+5;
int n;
long double ans;
struct node{
int x,y,s;
}pos[N];
bool check(long double mid)
{
long double sum=0;
for(int i=1;i<=n;i++)
{
sum+=(long double)pos[i].s/mid;
if(sum>pos[i].y) return false;
if(sum<pos[i].x) sum=pos[i].x;
}
return true;
}
int main()
{
scanf("%d",&n);
for(int i=1;i<=n;i++)
{
scanf("%d%d%d",&pos[i].x,&pos[i].y,&pos[i].s);
}
long double l=0,r=1e9;
while(r-l>=0.00001)
{
long double mid=(l+r)/2;
if(check(mid))
{
r=mid;
ans=mid;
// printf("%lf\n",ans);
}
else l=mid;
}
printf("%.2Lf",ans);
return 0;
}
```
by smyslenny @ 2021-10-07 22:47:52
@[smyslenny](/user/231190) 感谢dalao%%%
by 杨丶老爹 @ 2021-10-08 06:13:21