浅谈[0,1]区间内的n个随机实数变量中增加偏序关系类题目的解法
浅谈[0,1]区间内的n个随机实数变量中增加偏序关系类题目的解法
众所周知,把[0,1]区间内的n个随机、相互独立的实数变量\(x_i\)之间的大小关系写成一个排列\(\{p_i\}\),使得\(\forall i<n, x_{p_i} < x_{p_{i+1}}\),那么有一个结论是所有的排列都是等概率出现的,这完全不难理解,因为所有的变量都是可以轮换的。
但是,题目显然不会这么简单,有些题目会给一定的条件限制,例如强制一些偏序关系\(p_u<p_v\),对于这种情况,一般要求给定的偏序拥有特殊性质(例如一颗森林)才能做,并且可以通过常规的组合方法得到(对于森林的情况,合法的概率是\(\prod_{i} \frac 1 {i的子树大小}\))。但是对于这类问题的一些扩展,传统的组合方法便显得十分复杂,需要更加简洁,适用性更广的代数方法———对这些变量进行积分以得到答案。
CTS2019 day1t1随机立方体
这个题目也是求一个排列,并且求满足某种排列的方案数。
注意到题目中要求的恰好k个极大的数的概率不太好算,考虑容斥掉这一条件。
我们强制k个极大的数,剩下的数没有限制,那么对于一种有l个极大数的方案,显然我们会算\(\binom l k\)次,直接二项式反演即可。
现在问题变成了如何算强制k个极大数的方案数。极大数这个概念较为复杂,我们尝试着将其变为简单的偏序关系。首先先枚举k个极大数,并且确定好这k个极大数之间的偏序关系,然后根据极大数的定义我们可以得到某个极大数与其他数的偏序关系。不难发现这个偏序关系本质上是一条链套一堆菊花,那么我们可以很方便的维护这个偏序关系的贡献。
CTS2019 day2t3氪金手游
题面
对于此题,我们相当于枚举一个合法抽卡顺序,根据这个抽卡顺序来计算概率。
这个顺序与排列有点像,唯一的不同是这个概率的计算是加权的,即若抽卡顺序的排列是\(\{p_i\}\),那么对答案的贡献是\(\prod_{i=1}^n {w_{p_i} \over \sum_{j=i}^n w_{p_j}}\)。
一种方法是强行转成与排列类似的问题,把问题转化成有n种颜色,每种颜色有\(w_i\)个不同的球,令某种颜色的第一个球的位置为\(T_i\),\(T_i\)需要满足某种偏序关系(基图为树);或者是倒着从大到小自底向上地考虑抽卡顺序。这两种方法都需要用到容斥,原因是偏序关系并不构成一个外向树,所以无法直接算。但是下面提到的积分法就不需要考虑这么多,这种大一统的思想利用随机变量显得无脑却十分有效。
我们令\(g_1(x)=1,g_2(x)=2(1-x),g_3(x)=3(1-x)^2\)
答案便为\[\int_{0}^1 g_{w_1}(x_1) {\rm d} x_1 \int_{0}^1 g_{w_2} {\rm d} x_2......\int_{0}^1 g_{w_n}(x_n) {\rm d} x_n \prod [x_{u_i} < x_{v_i}]\]
只需要证
\[\int_{0}^1 g_{w_1}(x_1) {\rm d} x_1 \int_{0}^1 g_{w_2} {\rm d} x_2......\int_{0}^1 g_{w_n}(x_n) {\rm d} x_n \prod_{i=1}^{n-1} [x_{p_i}<x_{p_{i+1}}] = \prod_{i=1}^n {w_{p_i} \over \sum_{j=i}^n w_{p_j}}\]
可以轻松用归纳证明。
我们任选一点为根,直接对答案的式子自底向上的进行积分即可。
题目中\(w_i=j\)的概率为\(p_{ij}\),这样的话我们直接令i的函数\(f_i(x)=\sum_{j=1}^3 p_{ij}g_j(x)\)即可。
浅谈[0,1]区间内的n个随机实数变量中增加偏序关系类题目的解法的更多相关文章
- 浅谈css的行内类型标签和块级标签
常用标签的行内类型标签有:a.span.img:块级标签有:div.p.h1~6.ul.ol.li.dl.dt.dd. 行内类型标签的特征:标签的大小由标签的内容决定,不能设置width和height ...
- [0, 1] 区间内 n 次独立随机事件的一些问题
问题一 证明:一根1米长的绳子,随机切成 $N$ 刀,变成($N+1$)根绳子,则最短的一根绳子长度的期望为 $\displaystyle \frac{1}{(N+1)^2}$. 证: 引理:当分成 ...
- 技术分析 | 浅谈在MySQL体系下SQL语句是如何在系统中执行的及可能遇到的问题
欢迎来到 GreatSQL社区分享的MySQL技术文章,如有疑问或想学习的内容,可以在下方评论区留言,看到后会进行解答 SQL语句大家并不陌生,但某种程度上来看,我们只是知道了这条语句是什么功能,它可 ...
- 浅谈UML中类之间的五种关系及其在代码中的表现形式
本文转载:http://www.cnblogs.com/DebugLZQ/archive/2013/05/13/3066715.html 什么是类? 将某类东西归纳在一起,可以成为一个类. 类有很多种 ...
- 好代码是管出来的——浅谈.Net Core的代码管理方法与落地(更新中...)
软件开发的目的是在规定成本和时间前提下,开发出具有适用性.有效性.可修改性.可靠性.可理解性.可维护性.可重用性.可移植性.可追踪性.可互操作性和满足用户需求的软件产品. 而对于整个开发过程来说,开发 ...
- 浅谈C++三种传参方式
浅谈C++三种传参方式 C++给函数传参中,主要有三种方式:分别是值传递.指针传递和引用传递. 下面通过讲解和实例来说明三种方式的区别. 值传递 我们都知道,在函数定义括号中的参数是形参,是给函数内专 ...
- 浅谈Android系统进程间通信(IPC)机制Binder中的Server和Client获得Service Manager接口之路
文章转载至CSDN社区罗升阳的安卓之旅,原文地址:http://blog.csdn.net/luoshengyang/article/details/6627260 在前面一篇文章浅谈Service ...
- 浅谈Java线程安全
浅谈Java线程安全 - - 2019-04-25 17:37:28 线程安全 Java中的线程安全 按照线程安全的安全程序由强至弱来排序,我们可以将Java语言中各种操作共享的数据分为以下五类 ...
- 浅谈android代码保护技术_ 加固
浅谈android代码保护技术_加固 导语 我们知道Android中的反编译工作越来越让人操作熟练,我们辛苦的开发出一个apk,结果被人反编译了,那心情真心不舒服.虽然我们混淆,做到native层,但 ...
随机推荐
- HMAC算法原理
HMAC算法是一种基于密钥的报文完整性的验证方法 ,其安全性是建立在Hash加密算法基础上的.它要求通信双方共享密钥.约定算法.对报文进行Hash运算,形成固定长度的认证码.通信双方通过认证码的校验来 ...
- Spring-Boot-操作-Redis,三种方案全解析!
在 Redis 出现之前,我们的缓存框架各种各样,有了 Redis ,缓存方案基本上都统一了,关于 Redis,松哥之前有一个系列教程,尚不了解 Redis 的小伙伴可以参考这个教程: Redis 教 ...
- .net持续集成cake篇之常见文件及路径操作
系列目录 Cake常见文件和路径操作 在自动化构建任务里,很多操作都是跟文件打交道,比如文件打包,文件压缩,文件归档,文件传输,目录清理等.本节介绍一些cake里常见的文件操作方法 Cake相对路径问 ...
- 深入V8引擎-AST(5)
懒得发首页了,有时候因为贴的代码太多会被下,而且这东西本来也只是对自己学习的记录,阅读体验极差,所以就本地自娱自乐的写着吧! 由于是解析字符串,所以在开始之前介绍一下词法结构体中关于管理字符串类的属性 ...
- excel中统计COUNTIFS的值为0
excel中统计COUNTIFS的值为0 个人认为是由于导出的文件里面的字符个数问题 使用 =COUNTIFS(H1:H175,"微信支付") 这个的结果居然是0,找了很多办法 于 ...
- WPF MainWindow的TopMost,Resizemode
Topmost -[true,false] The default is false, but if set to true, your Window will stay on top of othe ...
- vue中操作localstorage
首先在子组件将localstorage方法进行封装 在父组件中对其进行引用 将输入的值存入到定义的searchHistory数组中,存储localstorage需要传两个参数,变量名为searchHi ...
- 【知识点】SPU&SKU
SPU:标准化产品单元 SPU = Standard Product Unit (标准化产品单元),SPU是商品信息聚合的最小单位,是一组可复用.易检索的标准化信息的集合,该集合描述了一个产品的特性. ...
- java全套学习资料
1.背景 技术需要大家的共同努力,在这里我将平时学习过的觉得比较好的资料分享给大家; 当然,最好的学习就是输出,与大家分享,在分享的资料中有的是自己的总结,有的是分享来自互联网,如果有侵权请联系删除; ...
- linux软连接和硬链接(总结)
参考博客: https://www.cnblogs.com/fengdejiyixx/p/10821820.html https://www.runoob.com/linux/linux-comm-l ...