Lights inside 3D Grid LightOJ - 1284 (概率dp + 推导)
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 + 推导)的更多相关文章
- LightOJ - 1284 Lights inside 3D Grid —— 期望
题目链接:https://vjudge.net/problem/LightOJ-1284 1284 - Lights inside 3D Grid PDF (English) Statistic ...
- 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 ...
- 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 ...
- LightOJ 1284 - Lights inside 3D Grid 概率/期望/二项式定理
题意:给你一个长宽高为x,y,z的长方体,里面每个格子放了灯,再给你k次选取任意长方体形状的区块,对其内所有灯开或关操作,初始为关,问亮灯数量的期望值. 题解:首先考虑选取区块的概率,使某个灯在被选取 ...
- 【非原创】LightOJ - 1284 Lights inside 3D Grid【概率期望】
学习博客: 戳这里 戳这里 戳这里 戳这里 题意: 在一个三维的空间,每个点都有一盏灯,开始全是关的, 现在每次随机选两个点,把两个点之间的全部点,开关都按一遍:问k次过后开着的灯的期望数量: 题解: ...
- LightOJ 1284 Lights inside 3D Grid (数学期望)
题意:在一个三维的空间,每个点都有一盏灯,开始全是关的.现在每次随机选两个点,把两个点之间的全部点,开关都按一遍,问k次过后开着的灯的期望数量: 析:很容易知道,如果一盏灯被按了奇数次,那么它肯定是开 ...
- LightOj_1284 Lights inside 3D Grid
题目链接 题意: 给一个X * Y * Z 的立方体, 每个单位立方体内都有一盏灯, 初始状态是灭的, 你每次操作如下: 1)选择一个点(x1, y1, z1) 再选择一个点(x2, y2, ...
- A Dangerous Maze (II) LightOJ - 1395(概率dp)
A Dangerous Maze (II) LightOJ - 1395(概率dp) 这题是Light Oj 1027的加强版,1027那道是无记忆的. 题意: 有n扇门,每次你可以选择其中一扇.xi ...
- Where to Run LightOJ - 1287(概率dp)
Where to Run LightOJ - 1287(概率dp) 题面长长的,看了半天也没看懂题意 不清楚的地方,如何判断一个点是否是EJ 按照我的理解 在一个EJ点处,要么原地停留五分钟接着走,要 ...
随机推荐
- 【赛时总结】◇赛时·VI◇ Atcoder ABC-104
◇赛时·VI◇ ABC-104 ◆??? 莫名爆炸……ABC都AK不了 QwQ C题竟然沦落到卡数据的地步:D题没有思路,直接放弃 ⋋( ◕ ∧ ◕ )⋌ ◆ 题目&解析 ◇A题◇ Rated ...
- 原生js关闭窗口
if (navigator.userAgent.indexOf("MSIE") > 0) { if (navigator.userAgent.indexOf("MS ...
- ethereum(以太坊)(四)--值传递与引用传递
contract Person { string public _name; function Person() { _name = "liyuechun"; } function ...
- scrapy--Cookies
大家好,之前看到的关于cookies的应用,由于有段时间没看,再看的时候花了一些时间,来给大家总结下.本文是根据:"http://www.bubuko.com/infodetail-2233 ...
- python 学习心得
多用类或是函数 我以前写的时候,不用函数,从头写到尾,后来,要改成函数,也是要花很多测试的时间,改的话还得一个调试,如果一开始就用函数的话,就能节省很多时间. 函数的功能尽可能的小 比如说像我用try ...
- http虚拟主机的简单配置训练
http的虚拟主机 对于某些web访问站点而言,每天的访问量很少,因此真正的放一台服务器去进行web站点是很 浪费资源的,因此我们选择了虚拟主机 web处理模块的分类(MPM) 1.perfork 一 ...
- VIM配置IDE
转载于:https://blog.csdn.net/andre617/article/details/53496490#%E8%84%9A%E6%B3%A8 由于YCM需要vim支持python,需要 ...
- zookeeper: web ui工具的安装
zookeeper官方没有提供web用户界面,这使很多人在使用zookeeper(动物管理员)同时,并不是很容易的理解zookeeper的数据结构,还好淘宝有位大神用Nodejs写了一个web的ui工 ...
- Android 用Chrome浏览器打开url 自定义样式
1.效果预览 1.1.真实效果就是从某一个APP,打开一个url,跳转到谷歌浏览器,返回之后,又回到之前的APP 1.2.说明一下条件 1.手机上必须要安装谷歌浏览器 2.手机上的默认浏览器 ...
- ansible-2
软件相关模块 rpm 和yum 的区别: rpm: redhat package manager :yum可以解决依赖关系 yum 源配置: cat /etc/yum.repos.d/epel.rep ...