我不理解。。

P1542 包裹快递

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


|