B. 清点星辰

单测试点时限: 2.0 秒

内存限制: 512 MB

“夜里,
你要抬头仰望满天的星星。
我那颗实在太小了,
我都没法指给你看它在哪儿。”

这样倒也好,我的星星,对你来说就是满天星星中的一颗。

所以,你会爱这满天的星星…所有的星星都会是你的朋友。

即使只能通过狭小的洞口,在楼宇的夹缝中仰望布满星辰的天空,你还是无法割舍对它的期待。

星星数不胜数,但你还是不厌其烦地清点他们。日复一日,终于在今天,你把他们都数清楚了。

于是你又开始找别的事情做了。你开始计算他们两两之间的最近距离。

你仰望星空的洞口是一个 1×1 的正方形,每天,星辰的位置都会发生变化,具体地说,每天都会有 n 个星辰随机地散落在这个正方形内的某个坐标上(每个点横纵坐标满足独立同分布 U(0,1))。

每天的距离都在变化,所以现在你只想知道他们两两之间最近距离的期望是多少。

输入

输入一个整数 n (2≤n≤109) ,表示星辰的数量。

输出

一行一个小数,输出答案。绝对误差在 10−3 内会被视为正确。

样例

input

2

output

0.521405

input

3

output

0.3055302430

提示

对于某连续性随机变量 X,若其取值范围为 Ω,其概率密度函数为 p(x),则其期望定义为 E(X)=∫Ωxp(x)。若要求关于 X 的函数 f(X) 的期望,则 E(f(X))=∫Ωf(x)p(x)。

该式子可以在多变量上进行推广,如果有两个随机变量 X, Y,则关于 X,Y 的函数 f(X,Y) 的期望可以定义为 E(f(X,Y))=∫Ωf(x,y)p(x,y),其中 p(x,y) 是 x,y 的联合概率密度函数。在 X 和 Y 独立时,p(x,y)=p(x)p(y)

在本题中,所有变量的概率密度函数都是 p(x)=1,0<x<1。故所求式可以写为:

∫10∫10⋯∫102nmin1≤i<j≤n(xi−xj)2+(yi−yj)2−−−−−−−−−−−−−−−−−√ dx1dy1dx2dy2⋯dxndyn

在 n=2 时,该式可以化简为:

∫10∫10∫10∫10(x1−x2)2+(y1−y2)2−−−−−−−−−−−−−−−−−−√ dx1dy1dx2dy2

求出该积分的值约为 0.521405。

在 n>2​ 的情形下,由于式子中有 min,积分式十分复杂,很有可能没有解析解。在定积分不可行的情况下,可以采用数值逼近的方法近似计算给定的定积分值,这种方法称为数值积分。借助于电子计算设备,数值积分可以快速而有效地计算复杂的积分。数值积分常用的方法包括矩形法、辛普森积分法等。更多有关数值积分的数学原理和算法介绍,读者可以自行阅读维基百科。

题目复制有变化,原地址:https://acm.ecnu.edu.cn/contest/125/problem/B/#report10

题意:不说了,都能看懂。

题解:蒙卡洛模拟,说白了就是随机数。看代码:

#include <iostream>
#include <cstdlib>
#include <cmath>
#include <ctime>
using namespace std;
const int MAX = 1e6;
double x[MAX],y[MAX];
int main(){int n,a,b;a=0;b=1;cin >> n;if(n>=888){//n很大后基本就是0,可以跑一下试试,因为开不了1e9的数组而且超时,只能这样,注意:数据误差要求0.001cout << 0.000000 << endl;return 0;}double ans=0;int w=1e7/n/n;//保证复杂度为1e7的情况下随机次数最多,就是在不超时情况下,随机次数竟可能多,这样误差就小srand(time(NULL));//以时间种子,防止被卡for (int i = 1; i <= w;i++){double minn=520;for (int j = 1; j <= n;j++){x[j]=((double)rand()/RAND_MAX)*(b-a)+a;//产生a——b之间的随机数y[j]=((double)rand()/RAND_MAX)*(b-a)+a;for (int k = 1; k < j;k++) {minn=min(minn,sqrt((x[j]-x[k])*(x[j]-x[k])+(y[j]-y[k])*(y[j]-y[k])));}}ans+=minn;//每次情况求和}printf("%.6f\n",ans/w);//求平均数return 0;
}

EOJ Monthly 2018.12 B. 清点星辰(蒙特卡洛模拟)相关推荐

  1. 华东师范大学2018.11月赛【EOJ Monthly 2018.11】

    [EOJ Monthly 2018.11] A. 心与心的距离 Time limit per test: 2.0 seconds Memory limit: 512 MB 近在咫尺,远在天边.心与心的 ...

  2. 12 Python总结之蒙特卡洛模拟

    蒙特卡洛模拟 蒙特卡洛模拟是金融学和数值科学中最重要的算法之一.它之所以重要,是因为在期权定价或者风险管理问题上有很强的能力.和其它数值方法相比,蒙特卡洛方法很容易处理高维问题,在这种问题上复杂度和计 ...

  3. EOJ Monthly 2018.1

    985月赛,当时鸽了,现在想补一补 A. 石头剪刀布的套路 Time limit per test: 1.0 seconds Memory limit: 256 megabytes 现在有一种石头剪刀 ...

  4. EOJ Monthly 2018.11 D. 猜价格

    猜价格 分两种情况讨论: k≤n,先猜至多 k 次 1,由于回答 <1 肯定是假的,所以可以把剩余系下是哪次错试出来,然后用至多 n 次搞定. k>n,每个数都猜两次,如果两次结果不一样, ...

  5. 【EOJ Monthly 2018.10 - B】 莫干山奇遇 (思维构造,数学,数组,贪心)(总结)

    题干: Time limit per test: 2.0 seconds Memory limit: 512 megabytes 出题人当然是希望出的题目有关 oxx,于是想方设法给题目配上一些有关 ...

  6. 【EOJ Monthly 2018.10 - A】oxx 的小姐姐们(模拟,水题,填充矩阵,输出格式有坑)

    题干: Time limit per test: 1.0 seconds Memory limit: 512 megabytes oxx 和他的小姐姐(们)躺在图书馆前的大草坪上看星星. 有强迫症的 ...

  7. EOJ Monthly 2019.3 A. 钝角三角形(大力模拟)(重载set)

    题目链接 QQ 小方以前不会判断钝角三角形,现在他会了,所以他急切的想教会你. 如果三角形的三边长分别为 a, b, c (a≤b≤c),那么当满足 a2+b2<c2 且 a+b>c 的时 ...

  8. EOJ Monthly 2019.11 E. 数学题(反演 + 杜教筛 + 拉格朗日插值)

    EOJ Monthly 2019.11 ∑i=1n∑a1=1i∑a2=1i∑a3=1i⋯∑ak−1i∑aki[gcd(a1,a2,a3,-,ak−1,ak,i)==1]=∑i=1n∑d∣iμ(d)⌊i ...

  9. 训练日志 2018.12.26

    今天看了一天网络流最大流,看到自闭...全程就是 wc 这也能实现,wc 这还能实现,wc 为什么这个模版的运行跟我手撸的结果不一样...跪了... 下午学院开会的时候跟实验室的几个大佬交流了一下进度 ...

最新文章

  1. 3月第一周几个要处理的问题
  2. 20165302第八周总结
  3. linux的查找命令
  4. Android 设置thumb图片大小
  5. css class选择器用法,CSS类选择器用法简明介绍
  6. 取得NSDate实例各个字段的数字
  7. 迭代器 java_Java设计模式8:迭代器模式
  8. 《荒漠甘泉》4月21日
  9. InkImageDataSetGenerator-开源一个可用于机器学习的书写轨迹图片生成的小工具
  10. [过年菜谱之]红烧甲鱼
  11. java云服务器怎么上传文件大小,java云服务器怎么上传文件大小
  12. JS内存泄漏实例解析
  13. ARM——操作系统—最小操作系统-开发板测试
  14. 机器学习数学基础之微分
  15. MFC Windows 程序设计[十六]之小小计算器
  16. 报童问题求解最大利润_OM | 选址问题模型研究——以悠桦林仓库布局实践为例...
  17. 易捷行云新一代私有云全场景智能统一运维|轻运维之场景化运维
  18. Sublime Text 3 快捷实现文件在浏览器中打开
  19. CSP 2020 入门级第一轮1~17题解析
  20. 领导绝不会告诉你的,提拔干部的三大关键因素

热门文章

  1. python中entry的使用方法_Python3.7 - tkinter Gui 05 Entry的使用
  2. 聚合支付里各扫码支付的返回报文样例
  3. 抽象类可用于创建对象吗_芦竹,见过吗?清热泻火。可用于热病烦渴,风火牙痛...
  4. 平面空间的元素和部分3d空间的元素
  5. 从案例图学习stateflow学习en、ex、du
  6. js动态修改css样式
  7. 数据可视化分析教学课件——FineBI实验册节选====活动分析
  8. 事业单位计算机和办公软件基础知识,计算机基础知识(事业单位计算机考试常考知识点总结)...
  9. 被资本和冬奥吹热的服务机器人,不止是昙花一现
  10. vivo计算机隐藏游戏,vivoX30功能使用教程 隐藏游戏图标不让孩子发现