社区讨论
求助求助
学术版参与者 3已保存回复 12
讨论操作
快速查看讨论及其快照的属性,并进行相关操作。
- 当前回复
- 12 条
- 当前快照
- 1 份
- 快照标识符
- @lo7v9a43
- 此快照首次捕获于
- 2023/10/27 08:19 2 年前
- 此快照最后确认于
- 2023/10/27 08:19 2 年前
p3747题目求助
删去while语句中的输出答案会出错
但是加上就会对掉
题目传送门
CPP#include<bits/stdc++.h>
using namespace std;
int n,p ;//ct;
struct node{
double a,b;
}num[100086];
bool check(double mid)
{
double tim;
for(int i=1;i<=n;i++)
if((num[i].a*mid>num[i].b)&&(num[i].a*mid-num[i].b>=0)) tim+=(num[i].a*mid-num[i].b)/p;
//cout<<tim<<" std"<<endl;
return tim>=mid;
}
int main()
{
cin>>n>>p;
for(int i=1;i<=n;i++) cin>>num[i].a>>num[i].b;
if((n==1)&&(num[1].a<=p)&&(num[1].b>0))
{
cout<<"-1";
return 0;
}
double l=0;
double r=1e7;
while(r-l>=1e-10)
{
double mid=(l+r)/2;
if(check(mid)) r=mid;
else l=mid;
// cout<<l<<" "<<r<<endl;
}
//cout<<l;
// cout<<l<<" "<<r<<endl;
// cout << l << endl;
printf("%.10lf",l);
// cout << endl << ct;
return 0;
}
回复
共 12 条回复,欢迎继续交流。
正在加载回复...