博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
BZOJ.4909.[SDOI2017]龙与地下城(正态分布 中心极限定理 FFT Simpson积分)
阅读量:4979 次
发布时间:2019-06-12

本文共 2342 字,大约阅读时间需要 7 分钟。

[Update 18.11.5] 晚上没事看了看课本,这不(大部分)是数学选修2-3的内容么。。也许没有那么...啊?

[Update 19.5] 学了学文化课觉得,这tm不就是数学选修2-3的课后练习题么?学了2-3然后套俩模板就完事了?出题人真是nb。


正态分布

是随机变量\(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},\sigma^2=\frac{\sum_{i=1}^n(i-\mu)^2}{n}=\frac{n^2-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 
#include
#include
#include
#define gc() getchar()#define eps 1e-7const 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
>1; Com Wn(cos(PI/mid),opt*sin(PI/mid)),t; for(int j=0; j
>1]>>1)|((i&1)<

转载于:https://www.cnblogs.com/SovietPower/p/9641460.html

你可能感兴趣的文章
出现Data Tools 与VS 不兼容问题
查看>>
CSS实例:图片导航块
查看>>
SQL CASE 语句
查看>>
第十三周总结
查看>>
HOJ13907 Diana and the Golden Apples
查看>>
抽象类实现接口
查看>>
记一次失败的面试
查看>>
微服务
查看>>
禁止移动端safari浏览器双击放大事件
查看>>
Socket编程的面纱
查看>>
CSS hack方式一览
查看>>
sublime text3 注册码
查看>>
Linux ps命令详解与示例说明
查看>>
最简单的git 用法
查看>>
剑指offer--面试题20
查看>>
Lombok使用与原理
查看>>
Masonry介绍与使用实践(快速上手Autolayout)
查看>>
struts标签库
查看>>
中文词频统计
查看>>
boost::lockfree::stack
查看>>