zoukankan      html  css  js  c++  java
  • Codeforces Round #499(Div2) C. Fly (二分精度)

    http://codeforces.com/contest/1011/problem/C  题目

    这是一道大水题!

    仅以此题解作为我这个蒟蒻掉分的见证

     1 #include<iostream>
     2 #include<cstdio>
     3 #include <cctype>
     4 #include<algorithm>
     5 #include<cstring>
     6 #include<cmath>
     7 #include<string>
     8 #include<cmath>
     9 #include<set>
    10 #include<vector>
    11 #include<stack>
    12 #include<queue>
    13 #include<map>
    14 using namespace std;
    15 #define ll long long
    16 #define mem(a,x) memset(a,x,sizeof(a))
    17 #define se second
    18 #define fi first
    19 const int INF= 0x3f3f3f3f;
    20 const int N=1e7+5;
    21 
    22 int n,m,a[1005],b[1005];     
    23 
    24 bool check(double x)
    25 {
    26     double sum=m+x;
    27     
    28     if(sum>m)
    29         sum-= sum/a[1]; //从地球起飞 
    30     else return 0;
    31     for(int i=2;i<=n;i++) //for循环里面都是在除地球外 各个星球上的降落起飞
    32     {
    33         if(sum>m)
    34             sum-=sum/a[i];
    35         else return 0;
    36         if(sum>m)
    37             sum-=sum/b[i];
    38         else return 0;
    39     }
    40     if(sum>m) 
    41         sum-=sum/b[1]; //最后降落地球
    42     else return 0;
    43     
    44     if(sum>=m) return 1; //燃料 = sum-m 如果燃料>=0 表示可以
    45     else return 0;
    46 }
    47 
    48 int main()
    49 {
    50     cin>>n>>m;
    51     for(int i=1;i<=n;i++) scanf("%d",&a[i]);
    52     for(int i=1;i<=n;i++) scanf("%d",&b[i]);
    53     
    54     double l=0,r=1e9+10,mid,ans=-1; //r不能正好 1e9,不然有个mid=1e9的点过不去
    55     int flag=0;
    56     while(r-l>=1e-6) //1e-7会超时,而且题目也要求了1e-6就够了
    57     {
    58         mid=(l+r)/2.0;
    59         if(check(mid))
    60         {
    61             ans=mid;
    62             r=mid;
    63             flag=1;
    64         }
    65         else l=mid;
    66     }
    67     if(!flag)cout<<-1;
    68     else printf("%.10f",ans);
    69 }
  • 相关阅读:
    codeforces 666C Codeword
    codeforces 156D Clues(prufer序列)
    codeforces 633E Startup Funding(浮点数处理)
    codeforces 932E Team Work(组合数学、dp)
    codeforces 1000F One Occurrence(线段树、想法)
    codeforces 812E Sagheer and Apple Tree(思维、nim博弈)
    写点文字
    00000
    省选前干些奇怪的事情
    PE415
  • 原文地址:https://www.cnblogs.com/thunder-110/p/9375288.html
Copyright © 2011-2022 走看看