Lights inside 3D Grid LightOJ - 1284


题意:

在一个三维的空间,每个点都有一盏灯,开始全是关的,

现在每次随机选两个点,把两个点之间的全部点,开关都按一遍;问k次过后开着的灯的期望数量;

题解:对每个点 单独计算贡献,即k次过后每个点开关被按了奇数次的期望

对于每个点来说,要使得该点开关被按过,那么选择的两个点不能在该点的同侧,即三个方向上都在两侧

这样的概率为$P = \frac{(X \cdot X - (i - 1) \cdot (i - 1) - (X - i) \cdot (X - i))} {X \cdot X} \cdot Y方向上的 \cdot Z方向上的 $

现在计算k次过后开关被按了奇数次的期望,定义f(K)为所求,则有递推如下

\(f(K) = (1 - P)\cdot f(K - 1) + P \cdot (1 - f(K-1))\)

化简得\(f(K) = \frac{1 - (1-2p)^K}{2}\)

#include<bits/stdc++.h>
#define LL long long
using namespace std;
const double eps = 1e-6; double cal(int limit,int x){
return (1.0 * limit * limit - (x - 1) * (x - 1) - (limit - x) * (limit - x)) / limit / limit;
}
double qpow(double x,int y){
double ans = 1;
while(y){
if(y & 1) ans = ans * x;
x = x * x,y >>= 1;
}
return ans;
}
int main()
{
int T, cas = 1;
cin>>T;
while(T--){
int X,Y,Z,K;
scanf("%d%d%d%d",&X,&Y,&Z,&K);
printf("Case %d: ",cas++);
double ans = 0;
for(int i = 1;i <= X;i++)
for(int j = 1;j <= Y;j++)
for(int z = 1;z <= Z;z++){
double p = cal(X,i) * cal(Y,j) * cal(Z,z);
ans += (1 - qpow(1 - 2 * p,K))/ 2;
} printf("%.12lf\n",ans);
}
return 0;
}

Lights inside 3D Grid LightOJ - 1284 (概率dp + 推导)的更多相关文章

  1. LightOJ - 1284 Lights inside 3D Grid —— 期望

    题目链接:https://vjudge.net/problem/LightOJ-1284 1284 - Lights inside 3D Grid    PDF (English) Statistic ...

  2. LightOJ - 1284 Lights inside 3D Grid (概率计算)

    题面: You are given a 3D grid, which has dimensions X, Y and Z. Each of the X x Y x Z cells contains a ...

  3. LightOJ1284 Lights inside 3D Grid (概率DP)

    You are given a 3D grid, which has dimensions X, Y and Z. Each of the X x Y x Z cells contains a lig ...

  4. LightOJ 1284 - Lights inside 3D Grid 概率/期望/二项式定理

    题意:给你一个长宽高为x,y,z的长方体,里面每个格子放了灯,再给你k次选取任意长方体形状的区块,对其内所有灯开或关操作,初始为关,问亮灯数量的期望值. 题解:首先考虑选取区块的概率,使某个灯在被选取 ...

  5. 【非原创】LightOJ - 1284 Lights inside 3D Grid【概率期望】

    学习博客: 戳这里 戳这里 戳这里 戳这里 题意: 在一个三维的空间,每个点都有一盏灯,开始全是关的, 现在每次随机选两个点,把两个点之间的全部点,开关都按一遍:问k次过后开着的灯的期望数量: 题解: ...

  6. LightOJ 1284 Lights inside 3D Grid (数学期望)

    题意:在一个三维的空间,每个点都有一盏灯,开始全是关的.现在每次随机选两个点,把两个点之间的全部点,开关都按一遍,问k次过后开着的灯的期望数量: 析:很容易知道,如果一盏灯被按了奇数次,那么它肯定是开 ...

  7. LightOj_1284 Lights inside 3D Grid

    题目链接 题意: 给一个X * Y * Z 的立方体, 每个单位立方体内都有一盏灯, 初始状态是灭的, 你每次操作如下: 1)选择一个点(x1, y1, z1)     再选择一个点(x2, y2, ...

  8. A Dangerous Maze (II) LightOJ - 1395(概率dp)

    A Dangerous Maze (II) LightOJ - 1395(概率dp) 这题是Light Oj 1027的加强版,1027那道是无记忆的. 题意: 有n扇门,每次你可以选择其中一扇.xi ...

  9. Where to Run LightOJ - 1287(概率dp)

    Where to Run LightOJ - 1287(概率dp) 题面长长的,看了半天也没看懂题意 不清楚的地方,如何判断一个点是否是EJ 按照我的理解 在一个EJ点处,要么原地停留五分钟接着走,要 ...

随机推荐

  1. 你们知道SEO每天都在做什么吗?

    医院也有做SEO的,专门负责医院网站优化工作,那么医院的SEO每天都做什么呢?偶然见到一篇文章,转载来分享给大家.感觉写的很实在. 大凡做seo工作的人都知道seo工作者每天都要做大量的外链,像有些个 ...

  2. tcl之array操作

  3. python学习之列表和元组

    配置环境:python 3.6 python编辑器:pycharm,代码如下: #!/usr/bin/python # -*- coding: UTF-8 -*- # list:是一种有序的集合,可以 ...

  4. 数据库DDL

    自己对数据库的整理,也是对自己知识的梳理 SQL ( Structure query language ) 结构化查询语言 SQL语言分为4个部分 1.DDL(Data Definition Lang ...

  5. Go实现mqtt服务

    package main import ( "os" "log" "github.com/eclipse/paho.mqtt.golang" ...

  6. 清空Fragment回退栈中某个Fragment之上的所有Fragment

    根据debug信息查看Fragment回退栈的情况,具体debug代码如下: int num = getActivity().getSupportFragmentManager().getBackSt ...

  7. Still unable to dial persistent://blog.csdn.net:80 after 3 attempts

    动不动电脑有些网站打不开了,还报错: Still unable to dial persistent://blog.csdn.net:80 after 3 attempts 为什么呢? 是dns坏了? ...

  8. Java从后台重定向(redirect)到另一个项目的方法

    (1)通过ModelAndView跳转 @RequestMapping("alipayforward") public ModelAndView alipayforward(Htt ...

  9. 四大VDI客户端 总有一款适合你

    [TechTarget中国原创] 交付虚拟桌面时IT管理员必须要考虑到用户如何访问虚拟桌面,因为这会影响用户体验以及VDI部署最终的成败. IT可以转向简便的HTML5客户端,HTML 5客户端功能丰 ...

  10. linux ubuntu 现在显示的是ubuntu login

    linux ubuntu 现在显示的是ubuntu login 如果要进图形界面,你需要安装桌面管理器sudo apt-get install ubuntu-desktop或sudo apt-get  ...