AT1445 乱数生成 题解
Description
有一个机器会等概率从 \(1\) 到 \(n\) 的正整数中选出一个整数。显然地,这个机器运行 \(3\) 次后会得到 \(3\) 个整数。求这 \(3\) 个整数的中位数是 \(k\) 的概率。
数据范围:\(1\leqslant k\leqslant n\leqslant 10^6\)。
Solution
发现自己快到 CSP 了完全不会概率,于是随便在 AtCoder 上面找了个题玩玩。
首先我们发现,由于选取的整数个数为奇数,那么要想这 \(3\) 个数为 \(k\),选取的三个数中至少应该有一个数是 \(k\)。
我们不妨设所选的 \(3\) 个正整数为 \(a,b,c\),然后对 \(a,b,c\) 的取值情况进行分类讨论。以下设 \(p\) 为任意不等于 \(k\) 的正整数。
\(a=b=c=k\)。
显然,只有一种情况能够满足这个要求。\(a,b,c\) 中恰好有 \(2\) 个整数为 \(k\)。
显然,从其余的 \(n-1\) 个正整数中选出一个数都能够满足这类条件。然后考虑一般的情况,由于不同的排列有 \((k,k,p)\),\((k,p,k)\) 和 \((p,k,k)\) 三种,因此这类下一共有 \(3(n-1)=3n-3\) 种情况。\(a,b,c\) 中恰好有 \(1\) 个整数为 \(k\)。
另外一个数要么是在 \([1,k-1]\) 中(也就是有 \(k-1\) 种不同的取值情况),要么是在 \([k+1,n]\) 中(也就是有 \(n-k\) 种不同的取值情况)。又由于不同的排列一共有 \((k,p_1,p_2)\),\((k,p_2,p_1)\),\((p_1,k,p_2)\),\((p_2,k,p_1)\),\((p_1,p_2,k)\) 和 \((p_2,p_1,k)\) \(6\) 种,因此这类下一共有 \(6(k-1)(n-k)=6nk-6k^2-6n+6k\) 种情况。
把上面这三类整合在一起,因此一共有 \(6nk-6k^2-6n+6k+3n-3+1=6nk-6k^2-3n+6k-2\) 种情况。又因为所有不同的情况一共有 \(n^3\) 种。因此概率为:
\]
注意在代码实现中,由于允许的误差很小,答案需要用 long double 储存以保证精度。
代码就不贴了。
AT1445 乱数生成 题解的更多相关文章
- C#版 - Leetcode 633. 平方数之和 - 题解
版权声明: 本文为博主Bravo Yeung(知乎UserName同名)的原创文章,欲转载请先私信获博主允许,转载时请附上网址 http://blog.csdn.net/lzuacm. C#版 - L ...
- [CQOI2014]数三角形 题解(组合数学+容斥)
[CQOI2014]数三角形 题解(数论+容斥) 标签:题解 阅读体验:https://zybuluo.com/Junlier/note/1328780 链接题目地址:洛谷P3166 BZOJ 350 ...
- [CQOI2014]数三角形 题解(找规律乱搞)
题面 其实这道题不用组合数!不用容斥! 只需要一个gcd和无脑找规律(滑稽 乍一看题目,如果单纯求合法三角形的话情况太多太复杂,我们可以从局部入手,最终扩展到整体. 首先考虑这样的情况: 类似地,我们 ...
- 洛谷P1066 2^k进制数(题解)(递推版)
https://www.luogu.org/problemnew/show/P1066(题目传送) (题解)https://www.luogu.org/problemnew/solution/P106 ...
- CodeForces 509C Sums of Digits(贪心乱搞)题解
题意:a是严格递增数列,bi是ai每一位的和,告诉你b1~bn,问你怎样搞才能让an最小 思路:让ai刚好大于ai-1弄出来的an最小.所以直接模拟贪心,如果当前位和前一个数的当前位一样并且后面还能生 ...
- 洛谷【P2022 有趣的数】 题解
题目链接 https://www.luogu.org/problem/P2022 题目描述 让我们来考虑1到N的正整数集合.让我们把集合中的元素按照字典序排列,例如当N=11时,其顺序应该为:1,10 ...
- Gym 101480I Ice Igloos(思维乱搞)题解
题意:给个最多500 * 500的平面,有半径最多不为1的n个圆,现在给你1e5条线段,问你每条线段和几个圆相交,时限10s 思路: 因为半径<1,那么我其实搜索的范围只要在线段附近就好了.x1 ...
- T66099 小xzy的数对 题解
T66099 小xzy的数对 题目背景 老师带同学参加表演,要求学生两两一组表演,但有些学生一起会发生冲突,现在老师想知道有多少组学生分到一起时不会发生冲突. 题目描述 学生发生冲突当且仅当他们身上的 ...
- Hdoj 2084.数塔 题解
Problem Description 在讲述DP算法的时候,一个经典的例子就是数塔问题,它是这样描述的: 有如下所示的数塔,要求从顶层走到底层,若每一步只能走到相邻的结点,则经过的结点的数字之和最大 ...
随机推荐
- Codeforces 79D - Password(状压 dp+差分转化)
Codeforces 题目传送门 & 洛谷题目传送门 一个远古场的 *2800,在现在看来大概 *2600 左右罢( 不过我写这篇题解的原因大概是因为这题教会了我一个套路罢( 首先注意到每次翻 ...
- Codeforces 1129D - Isolation(分块优化 dp)
Codeforces 题目传送门 & 洛谷题目传送门 又独立切了道 *2900( 首先考虑 \(dp\),\(dp_i\) 表示以 \(i\) 为结尾的划分的方式,那么显然有转移 \(dp_i ...
- AWS EKS 添加IAM用户角色
作者:SRE运维博客 博客地址: https://www.cnsre.cn/ 文章地址:https://www.cnsre.cn/posts/211203931498/ 相关话题:https://ww ...
- Browse Code Answers
一个记录各种语言可能遇到的问题的论坛 :https://www.codegrepper.com/code-examples/
- linux系统中tomcat的安装及使用
linux系统中tomcat的安装及使用 linux系统中安装tomcat tar.gz/tar文件格式安装 先下载好该文件,将文件放置在校安装的目录下, 如果是tar.gz后缀使用 tar -zxv ...
- c/c++在线编译Output Limit Exceeded(OLE)错误
提示输出错误,有如下两个可能情况: 1. 不符合题目给出的输出格式,自己输出了多余的内容或者格式不正确 2. 输入数据的时候,未考虑到输入错误的情况 针对2,有如下的例子: 错误的情况: 1 int ...
- 学习java的第十六天
一.今日收获 1.完成了手册第二章没有验证完成的例题 2.预习了第三章的算法以及for语句与if语句的用法 二.今日难题 1.验证上出现问题,没有那么仔细. 2.第二章还有没有完全理解的问题 三.明日 ...
- 学习Vue源码前的几项必要储备(二)
7项重要储备 Flow 基本语法 发布/订阅模式 ES6+ 语法 原型链.闭包 函数柯里化 event loop 接上讲 聊到了ES6的几个重要语法,加下来到第四点继续开始. 4.原型链.闭包 原型链 ...
- redis 之 哨兵
#:编译安装redis4.0 [root@master ~]# tar xf redis-4.0.14.tar.gz [root@master ~]# cd redis-4.0.14/ [root@m ...
- Linux:while read line与for循环的区别
while read line:是一次性将文件信息读入并赋值给变量line , while中使用重定向机制,文件中的所有信息都被读入并重定向给了整个while 语句中的line 变量. for:是每次 ...