Codeforces 801C Voltage Keepsake 二分+精度

来源:互联网 发布:金蝶软件数据库职位 编辑:程序博客网 时间:2024/06/05 19:50

点击打开链接

简单的二分判定,关键精度...

精度炸了 以后有关二分精度,固定二分次数 不用eps了

#include <bits/stdc++.h>using namespace std;typedef long long ll;const int N=2e5+20;double p,a[N],b[N],t[N];int n;bool check(double x){for(int i=1;i<=n;i++)t[i]=b[i];for(int i=1;i<=n;i++)t[i]-=a[i]*x;double cnt=0;//把负的充到0 所需要时间 for(int i=1;i<=n;i++){if(t[i]<0)cnt+=fabs(t[i])/p;}return cnt<=x;}int main(){while(cin>>n>>p){double s=0;for(int i=1;i<=n;i++){scanf("%lf%lf",&a[i],&b[i]);s+=a[i];}double ans;if(p>=s)puts("-1");else{double l=0,r=9e17;//for(int i=0;i<150;i++)//比用eps快的多 {double mid=(l+r)/2.0;if(check(mid)){ans=mid;l=mid;}elser=mid;}printf("%.10lf\n",ans);}}return 0;}


0 0
原创粉丝点击