BZOJ
洛谷

[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},\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 <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;
}

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

BZOJ.4909.[SDOI2017]龙与地下城(正态分布 中心极限定理 FFT Simpson积分)相关推荐

  1. [LOJ2267][SDOI2017]龙与地下城-FFT-自适应辛普森积分

    龙与地下城 Description 小Q同学是一个热爱学习的人,但是他最近沉迷于各种游戏,龙与地下城就是其中之一. 在这个游戏中,很多场合需要通过掷骰子来产生随机数,并由此决定角色未来的命运,因此骰子 ...

  2. 洛谷P3779 [SDOI2017]龙与地下城(概率论+Simpson+FFT)

    题面 传送门 题解 orz shadowice 正态分布 正态分布是随机变量\(X\)的一种概率分布形式.它用一个期望\(\mu\)和方差\(\sigma^2\)就可以描述,记为\(N(\mu,\si ...

  3. 正态分布与中心极限定理

    正态分布 定义 正态分布(英语:normal distribution)又名高斯分布(英语:Gaussian distribution),是一个非常常见的连续概率分布.正态分布在统计学上十分重要,经常 ...

  4. 中心极限定理_统计学基础知识3——正态分布与大数定律、中心极限定理

    正态分布,也称常态分布,又名高斯分布. 正态曲线呈钟型,两头低,中间高,左右对称因其曲线呈钟形,因此人们又经常称之为钟形曲线. 若随机变量X服从一个数学期望为μ.方差为σ^2的正态分布,记为N(μ,σ ...

  5. BZOJ 4819: [Sdoi2017]新生舞会

    二次联通门 : BZOJ 4819: [Sdoi2017]新生舞会 /*BZOJ 4819: [Sdoi2017]新生舞会二分 + 01分数规划 + 最小费用流二分出一个答案费用流检验*/ #incl ...

  6. 几乎所有的RPG游戏(一种源自《龙与地下城》的游戏类型)在进入游戏时都会让用户自己来创建自己喜欢的角色。本次上机要求编写一个简化的创建游戏角色的程序。

    一:题目分析 1.功能描述 几乎所有的RPG游戏(一种源自<龙与地下城>的游戏类型)在进入游戏时都会让用户自己来创建自己喜欢的角色.本次上机要求编写一个简化的创建游戏角色的程序. 2.游戏 ...

  7. matlab仿真高尔顿正态分布源码,中心极限定理:从高尔顿板到麦克斯韦分布

    神奇的正态分布源于"加". 撰文 | 张和持 时隔多年,或许你早就记不得16岁那年夏天高中闷热的教室,但可能会记得有一天数学老师说着要给大伙看个稀奇--一块祖传的高尔顿板.尽管班上 ...

  8. ffmpeg开源工具的使用_使用开源工具玩龙与地下城

    ffmpeg开源工具的使用 我一直有两个活动的角色扮演游戏(RPG)会话. 一种是传统的面对面游戏,我们在我的厨房餐桌旁玩. 另一个通过Google Hangouts和一个网站Roll20.net在线 ...

  9. 龙与地下城用户名_多用户地下城如何教我编程

    龙与地下城用户名 by Carl Tashian 卡尔·塔什安(Carl Tashian) 多用户地下城如何教我编程 (How Multi-User Dungeons taught me to pro ...

最新文章

  1. 限时早鸟票 | 2019 中国大数据技术大会(BDTC)超豪华盛宴抢先看!
  2. gpg的一些常用操作
  3. java amr 转 mp3_JAVA 音频转换AMR 转MP3,OS,Linux cent os 7
  4. 如何隐藏tabar上方的线条?
  5. 信息化的“五观”与“N为”
  6. JavaWeb——内置对象session与httpSession对象是同一个东西么?
  7. Qt 编译出错 Could not create directory
  8. linux下git分支管理,git远程分支管理
  9. Track your visitors using an HttpModule
  10. 『数据库』这篇数据库的文章真没人看--数据库完整性
  11. java 指针 引用_java中的引用与c中的指针
  12. XPath匹配标签使用text()判断获取结果失败/为空的问题及解决方法
  13. 推荐一个免费绘制软件架构图的网站
  14. Oracle 创建普通用户,并赋予权限
  15. win10cmd重置系统_win10怎么重置电脑 win10重置此电脑的方法【图文】
  16. centos7安装java(多种方式)
  17. 《Spring Cloud微服务实战》翟永超(著)
  18. python读取excel并绘制折线图
  19. iOS:iPhone XR、iPhoneXS、iPhone XS Max屏幕适配
  20. 王者荣耀使用什么编程语言开发的?

热门文章

  1. 再见 2017 你好 2018 ,程序员们的精彩年度总结
  2. js比较日期大小 判断日期
  3. DLL型后门原理及完全清除秘诀
  4. 转子接地保护原理_发电机转子一点接地:保护原理、整定方法、动作后果
  5. c++随机打乱数组_第四天 Java 数组与排序
  6. java eden分配参数,JVM垃圾收集器与内存分配策略,
  7. assert函数_悉数Python函数传参的语法糖
  8. mysql convert报错_部署mysql版本项目问题记录
  9. 设计模式之单例模式介绍
  10. PG基于pgpool-II实现读写分离和负载均衡