zoukankan      html  css  js  c++  java
  • LightOJ 1284 Lights inside 3D Grid

    题意是给出一个由边长为1的立方体组成的长方体,每个小立方体中有一盏灯,每次操作随机选择两个立方体,以这两个立方体作为对角线顶点确定一个长方体,长方体中所有块的灯自己取反,就是亮着的关上,暗着的打开,求这样操作k次以后亮着的灯数的期望值。

    设F(i)为操作i次以后对某灯奇数次取反的概率,G(i)为偶数次,奇数次取反以后灯是亮着的,贡献的期望值显然是1,所以求出F(k)就可以了。

    设p为某灯被选择到的概率。

    显然F(i) = F(i - 1) * (1 - p) + G(i - 1) * p, G(i) = 1 - F(i)。联立以后会发现F(k)为等比数列求和的结果。

    #include <bits/stdc++.h>
    using namespace std;
    
    double calc(int aa, int bb) {
        double a = (double)aa, b = (double)bb;
        return 1.0 - ((a - 1.0) * (a - 1.0) + (b - a) * (b - a)) / (b * b);
    }
    
    int main() {
        int t;
        scanf("%d", &t);
        int cas = 0;
        while(t--) {
            int x, y, z, n;
            scanf("%d %d %d %d", &x, &y, &z, &n);
            double ans = 0;
            for(int i = 1; i <= x; i++) 
                for(int j = 1; j <= y; j++)
                    for(int k = 1; k <= z; k++) {
                        double p = calc(i, x) * calc(j, y) * calc(k, z);
                        ans += 0.5 * (1.0 - pow(1.0 - 2.0 * p, (double)n));
                    }
            printf("Case %d: %.7lf
    ", ++cas, ans);
        }
    }
  • 相关阅读:
    java 自定义线程池
    java 锁
    volatile相关内容
    消息驱动式微服务:Spring Cloud Stream & RabbitMQ
    JVM中的本机内存跟踪
    性能监控: SPF4J介绍
    Spring Batch 入门级示例教程
    使用 Spring Boot Actuator 构建 RESTful Web 应用
    回调“地狱”和反应模式
    Java动态规划
  • 原文地址:https://www.cnblogs.com/lonewanderer/p/5746461.html
Copyright © 2011-2022 走看看