BZOJ.4909.[SDOI2017]龙与地下城(正态分布 中心极限定理 FFT Simpson积分)
[Update 18.11.5] 晚上没事看了看课本,这不(大部分)是数学选修2-3的内容么。。也许没有那么...啊?
[Update 19.5] 学了学文化课觉得,这tm不就是数学选修2-3的课后练习题么?学了2-3然后套俩模板就完事了?出题人真是nb。
https://www.luogu.org/blog/ShadowassIIXVIIIIV/solution-p3779#
正态分布
正态分布是随机变量\(X\)的一种概率分布形式。它用一个期望\(\mu\)和方差\(\sigma^2\)就可以描述,记为\(N(\mu,\sigma^2)\)。
若随机变量\(X\)服从一个数学期望为\(\mu\)、方差为\(\sigma^2\)的正态分布,记作\(X\sim N(\mu,\sigma^2)\),读作\(X\)服从\(N(\mu,\sigma^2)\)。
当\(\mu=0,\sigma=1\)时的正态分布称为标准正态分布。
概率密度函数
概率密度函数用来描述连续型随机变量的分布情况。随机变量的取值落在某个区域内的概率,为概率密度函数在该区域的积分。(或者就是\(f(x)\)在该区域内与\(x\)轴围成的图形面积)
若随机变量\(X\sim N(\mu,\sigma^2)\),则其概率密度函数为$$f(x)=\frac{1}{\sqrt{2\pi}\sigma}e{-\frac{(x-\mu)2}{2\sigma}}$$
\(e^x\)可以使用\(exp()\)函数计算。只要证明了一个变量服从正态分布,就可以直接对概率密度函数的这一区间进行积分了。
中心极限定理
中心极限定理:当样本量\(n\)逐渐趋于无穷大时,\(n\)个抽样样本的均值的频数逐渐趋于正态分布(无论总体是什么分布)。
该定理说明,设随机变量\(X_1,X_2,\ldots,X_n\)独立同分布,它们的期望为\(\mu\)、方差为\(\sigma^2\),当\(n\)足够大时(OI:满足精确度需求时),随机变量$$Y_n=\frac{\sum_{i=1}^nX_i-n\mu}{\sqrt n\sigma}$$近似地服从标准正态分布\(N(0,1)\)。
\(Y_n\)服从正态分布,求出其范围后就可以直接对正态分布的概率密度函数求积分了。
对于本题有$$\mu=\frac{n-1}{2},\sigma2=\frac{\sum_{i=1}n(i-\mu)2}{n}=\frac{n2-1}{12}\\sum_{i=1}^nX_i\in[A,B]\Y_n\in[\frac{A-n\mu}{\sqrt n\sigma},\frac{B-n\mu}{\sqrt n\sigma}]$$
然后对\(Y_n\)的值域辛普森积分(\(\int_l^rf(x)d_x=\frac{(r-l)(f(l)+f(r)+4f(mid))}{6}\))。
但是当\(n=1\)时也不能认为\(n\)足够大。所以当数据较小时要用另一种做法。比较显然的是构造生成函数,然后求其\(Y\)次幂。
这里构造出生成函数后,用FFT将多项式转化为点值表示,可以直接对点值快速幂,再FFT回去。
积分要求\([0,r]-[0,l]\)的,直接求\([l,r]\)只有80分。。(精度吗)
积分时的\(l,r\)大小关系并无影响。
洛谷排行榜还能看到更快的做法(不想看)。
//11072kb 6148ms
#include <cmath>
#include <cstdio>
#include <cctype>
#include <algorithm>
#define gc() getchar()
#define eps 1e-7
const int N=(1<<19)+5;
const double PI=acos(-1),K=1.0/sqrt(2*PI);
int rev[N];
struct Com//plex
{
double x,y;
Com() {}
Com(double x,double y):x(x),y(y) {}
Com operator +(const Com &a) {return Com(x+a.x, y+a.y);}
Com operator -(const Com &a) {return Com(x-a.x, y-a.y);}
Com operator *(const Com &a) {return Com(x*a.x-y*a.y, x*a.y+y*a.x);}
}A[N];
inline int read()
{
int now=0;register char c=gc();
for(;!isdigit(c);c=gc());
for(;isdigit(c);now=now*10+c-'0',c=gc());
return now;
}
Com FP(Com x,int k)//可以直接点值快速幂
{
Com t(1,0);
for(; k; k>>=1,x=x*x)
if(k&1) t=t*x;
return t;
}
void FFT(Com *a,int lim,int opt)
{
for(int i=1; i<lim; ++i) if(i<rev[i]) std::swap(a[i],a[rev[i]]);
for(int i=2; i<=lim; i<<=1)
{
int mid=i>>1;
Com Wn(cos(PI/mid),opt*sin(PI/mid)),t;
for(int j=0; j<lim; j+=i)
{
Com w(1,0);
for(int k=0; k<mid; ++k,w=w*Wn)
a[j+k+mid]=a[j+k]-(t=a[j+k+mid]*w),
a[j+k]=a[j+k]+t;
}
}
if(opt==-1) for(int i=0; i<lim; ++i) a[i].x/=lim;
}
inline double F(double x)
{
return K*exp(-x*x*0.5);
}
inline double Simpson(double l,double r)
{
return (r-l)*(F(l)+F(r)+4*F((l+r)*0.5))/6.0;
}
double Int(double l,double r,double Eps,double ans)
{
double m=(l+r)*0.5,lans=Simpson(l,m),rans=Simpson(m,r);
if(fabs(lans+rans-ans)<Eps) return lans+rans;
return Int(l,m,Eps*0.5,lans)+Int(m,r,Eps*0.5,rans);
}
int main()
{
for(int T=read(),X,Y,lim; T--; )
{
X=read(),Y=read(),lim=X*Y;
int len=0;
while(1<<len<=lim) ++len; lim=1<<len;
if(lim<N)
{
--len;
for(int i=0; i<lim; ++i) A[i]=Com(0,0),rev[i]=(rev[i>>1]>>1)|((i&1)<<len);
double xx=1.0/X,ans;
for(int i=0; i<X; ++i) A[i].x=xx;
FFT(A,lim,1);
for(int i=0; i<lim; ++i) A[i]=FP(A[i],Y);
FFT(A,lim,-1);
for(int i=1,l,r; i<=10; ++i)
{
l=read(),r=read(),ans=0;
for(int j=l; j<=r; ++j) ans+=A[j].x;
printf("%.7lf\n",ans);
}
}
else
{
double l,r,mu=1.0*(X-1)/2,sigma=1.0*(X*X-1)/12/*\sigma^2*/,a=mu*Y,b=sqrt(sigma*Y);
for(int i=1; i<=10; ++i)
l=1.0*(read()-a)/b, r=1.0*(read()-a)/b,
printf("%.7lf\n",Int(0,r,eps,Simpson(0,r))-Int(0,l,eps,Simpson(0,l)));
// printf("%.7lf\n",Int(l,r,eps,Simpson(l,r)));//WA
}
}
return 0;
}
BZOJ.4909.[SDOI2017]龙与地下城(正态分布 中心极限定理 FFT Simpson积分)的更多相关文章
- bzoj 4909 [Sdoi2017]龙与地下城
题面 https://www.lydsy.com/JudgeOnline/problem.php?id=4909 题解 目前为止仅仅在LOJ上A掉这道题(Loj真快!) 当然不是标准做法 显然我们只要 ...
- 洛谷P3779 [SDOI2017]龙与地下城(概率论+Simpson+FFT)
题面 传送门 题解 orz shadowice 正态分布 正态分布是随机变量\(X\)的一种概率分布形式.它用一个期望\(\mu\)和方差\(\sigma^2\)就可以描述,记为\(N(\mu,\si ...
- LOJ2267 SDOI2017 龙与地下城 FFT、概率密度函数、Simpson
传送门 概率论神仙题-- 首先一个暴力做法是设\(f_{i,j}\)表示前\(i\)个骰子摇出点数和为\(j\)的概率,不难发现DP的过程是一个多项式快速幂,FFT优化可以做到\(O(XYlog(XY ...
- 中心极限定理&&正态分布 随想
0-前言 笔者本来周末约好朋友出去骑行,不料天公不作美!哎,闲来无事来到了实验室,本来打算看看<天天向上>,而这一期又实在不好看(偶像剧).只好来做做一些小实验,脑海里突然想到“正态分布“ ...
- 【转帖】Sigma水平和缺陷率的对应关系:正态分布中心和1.5标准差偏移
http://www.pinzhi.org/thread-5395-1-1.html Sigma水平和缺陷率的对应关系:正态分布中心和有1.5个标准差偏移 在过程稳定时,若给出了规范限,过程的平均与标 ...
- R-2 - 正态分布-中心极限-置信区间-正态假设检验
本节内容 1:样本估计总体均值跟标准差,以及标准误 2:中心极限定理 3:如何查看数据是否是正态分布QQ图 4:置信区间的理解跟案例 5:假设检验 参考文章: 假设检验的学习和理解 一.样本估计总体均 ...
- (WA)BZOJ 4821: [Sdoi2017]相关分析
二次联通门 : BZOJ 4821: [Sdoi2017]相关分析 2017.8.23 Updata 妈妈!!这道题卡我!!!就是不然我过!!!!! #include <cstdio> # ...
- [BZOJ 4820] [SDOI2017] 硬币游戏(高斯消元+概率论+字符串hash)
[BZOJ 4820] [SDOI2017] 硬币游戏(高斯消元+概率论+字符串hash) 题面 扔很多次硬币后,用H表示正面朝上,用T表示反面朝上,会得到一个硬币序列.比如HTT表示第一次正面朝上, ...
- 中心极限定理(Central Limit Theorem)
中心极限定理:每次从总体中抽取容量为n的简单随机样本,这样抽取很多次后,如果样本容量很大,样本均值的抽样分布近似服从正态分布(期望为 ,标准差为 ). (注:总体数据需独立同分布) 那么样本容量n应 ...
随机推荐
- 流媒体技术学习笔记之(十一)Windows环境运行EasyDarwin
流媒体平台框架下载安装 Github下载 下载地址:https://github.com/EasyDarwin/EasyDarwin/releases 解压安装 选择Windows 安装平台的安装包( ...
- 流媒体技术学习笔记之(三)Nginx-Rtmp-Module统计某频道在线观看流的客户数
获得订阅者人数,可以方便地显示观看流的客户数. 查看已经安装好的模块 /usr/local/nginx/sbin/nginx -V 安装从源编译Nginx和Nginx-RTMP所需的工具 sudo a ...
- SpringMvc数据校验@Valid等注解的使用与工具类抽取
最近在重构老项目的代码,发现校验入参占用了很多代码,之前我对这一块的认识局限于使用StringUtils等工具来多个if块进行判断,代码是没什么问题,但是总写这些令人生烦,毕竟写代码也要讲究优雅的嘛, ...
- html5 canvas 水平渐变描边
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/ ...
- .gitignore 失效问题解决
对于Git,已经跟踪的文件,再加入到.gitignore中,会使忽略失效.使用下面3个命令使它重新生效 git rm -r --cached . git add . git commit -m &qu ...
- Zookeeper集群 + Kafka集群 + KafkaOffsetMonitor 监控
一.Zookeeper ZooKeeper是一个分布式的,开放源码的分布式应用程序协调服务,是Google的Chubby一个开源的实现,是Hadoop和Hbase的重要组件.它是一个为分布式应用提供一 ...
- 第5月第10天 node.js的request模块
1.node.js的request模块 http://www.cnblogs.com/meteoric_cry/archive/2012/08/18/2645530.html
- Sortable.js
拖拽的时候主要由这几个事件完成, ondragstart 事件:当拖拽元素开始被拖拽的时候触发的事件,此事件作用在被拖曳元素上 ondragenter 事件:当拖曳元素进入目标元素的时候触发的事件,此 ...
- CF359B Permutation (构造)
CF359B Permutation \(solution:\) 作为一道构造题,这题也十分符合构造的一些通性----(找到一些规律,然后无脑循环). 构造一个长度为 \(2n\) 的排列 \(a\) ...
- Nagios介绍
Nagios介绍 Nagios是一款功能强大.优秀的开源监控系统,它能够让你发现和解决IT架构中存在的问题,避免这些问题影响到关键业务流程. Nagios最早于1999年发布,它在开源社区的影响力是相 ...