• bnu 34986 Football on Table(数学+暴力)


    题目连接:bnu 34986 Football on Table

    题目大意:给出桌子的大小L,W,然后是球的起始位置sx,sy,以及移动的向量dx,dy。然后给出n。表示有n个杆,对于每一个杆。先给出位置x,以及杆上有多少个小人c,给出小人的宽度。再给出c个小人间的距离。如今问说球有多少个概率能够串过全部人。

    解题思路。对于每一个杆求无阻挡的概率。注意概率 = 空隙 / 可移动的范围大小,而不是W。其它就水水的。

    #include <cstdio>
    #include <cstring>
    #include <cmath>
    #include <algorithm>
    
    using namespace std;
    const double eps = 1e-8;
    const int N = 205;
    
    double L, W;
    double sx, sy, dx, dy;
    double d[N];
    
    double solve () {
    
        int n, c;
        double w, ans = 1;
    
        scanf("%d", &n);
    
        while (n--) {
            scanf("%lf%d", &w, &c);
            double r = sy + w * dy / dx;
            double s = 0;
            c = 2 * c - 1;
    
            for (int i = 0; i < c; i += 2)
                scanf("%lf", &d[i]);
            for (int i = 1; i < c; i += 2)
                scanf("%lf", &d[i]);    
            for (int i = 0; i < c; i++)
                s += d[i];
    
            double l = W - r;
            double rec = 0;
    
            if (l > s) {
                rec += (l - s);
                l = 0;
            } else {
                l = s - l;
            }
    
            if (r > s) {
                rec += (r - s);
                r = s;
            }
    
    
            s = 0;
            for (int i = 0; i < c; i++) {
                double tmp = s + d[i];
                if (i&1) {
                    double add = min(r, tmp) - max(s, l);
                    rec += max(add, (double)0);
                }
                s = tmp;
            }
    
            ans *= rec / (W-s);
        }
        return ans;
    }
    
    int main () {
        int cas;
        scanf("%d", &cas);
        for (int i = 1; i <= cas; i++) {
            scanf("%lf%lf", &L, &W);
            scanf("%lf%lf%lf%lf", &sx, &sy, &dx, &dy);
            printf("Case #%d: %.5lf
    ", i, solve());
        }
        return 0;
    }

    版权声明:本文博主原创文章。博客,未经同意,不得转载。

  • 相关阅读:
    Tag文件使用
    微信开发 select选择框
    useGeneratedKeys的用法
    IBM MQ8.0常用操作
    C++对象在继承情况下的内存布局---多态实现的原理
    C++中的赋值操作符重载和拷贝构造函数
    C++中多态的概念和意义
    C 链表冒泡排序
    js 倒计时(可自定义时间)
    如何分析解决Android ANR
  • 原文地址:https://www.cnblogs.com/zfyouxi/p/4759723.html
Copyright © 2020-2023  润新知