zoukankan      html  css  js  c++  java
  • Codeforces 782B:The Meeting Place Cannot Be Changed(三分搜索)

    http://codeforces.com/contest/782/problem/B

    题意:有n个人,每个人有一个位置和速度,现在要让这n个人都走到同一个位置,问最少需要的时间是多少。

    思路:看上去很像二分搜索啊!枚举距离,判断是否有更少的时间,然后发现时间不随着距离单调增减,想起前两天被三分虐了一道题,那就是三分吧。

    三分枚举距离,然后判断是否有更少的时间就可以了。比赛时候用了max函数还有精度开太大,超时了,索性直接循环100次。

     1 #include <bits/stdc++.h>
     2 using namespace std;
     3 #define N 200010
     4 const double eps = 1e-9;
     5 double x[N], v[N], res;
     6 int n;
     7 
     8 double cal(double dis) {
     9     double ans = 0, tmp = 0;
    10     for(int i = 1; i <= n; i++)
    11         if(ans < fabs(x[i] - dis) / v[i]) ans = fabs(x[i] - dis) / v[i];
    12     if(res > ans) res = ans;
    13     return ans;
    14 }
    15 
    16 int main() {
    17     scanf("%d", &n);
    18     double ma = 0, mi = 1000000000;
    19     for(int i = 1; i <= n; i++) scanf("%lf", &x[i]), ma = max(ma, x[i]), mi = min(mi, x[i]);
    20     for(int i = 1; i <= n; i++) scanf("%lf", &v[i]);
    21     double l = mi, r = ma;
    22     res = 1000000000;
    23     for(int i = 0; i < 100; i++) {
    24         double mid = (l + r) / 2;
    25         double midd = (mid + r) / 2;
    26         if(cal(mid) > cal(midd)) l = mid;
    27         else r = midd;
    28     }
    29     printf("%.12f
    ", res);
    30     return 0;
    31 }
  • 相关阅读:
    CSS的z-index(分层)
    CSS的position(位置)
    HTML-答案检查&按钮倒计时
    HTML-字体逐渐显示
    2012 VS密钥
    游戏的轻度、中度、重度是什么意思
    PHP Date()函数详细参数
    服务器被黑之后的处理经历
    SEO
    ps切图步骤
  • 原文地址:https://www.cnblogs.com/fightfordream/p/6510010.html
Copyright © 2011-2022 走看看