浅谈[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个随机实数变量中增加偏序关系类题目的解法的更多相关文章

  1. 浅谈css的行内类型标签和块级标签

    常用标签的行内类型标签有:a.span.img:块级标签有:div.p.h1~6.ul.ol.li.dl.dt.dd. 行内类型标签的特征:标签的大小由标签的内容决定,不能设置width和height ...

  2. [0, 1] 区间内 n 次独立随机事件的一些问题

    问题一 证明:一根1米长的绳子,随机切成 $N$ 刀,变成($N+1$)根绳子,则最短的一根绳子长度的期望为 $\displaystyle \frac{1}{(N+1)^2}$. 证: 引理:当分成 ...

  3. 技术分析 | 浅谈在MySQL体系下SQL语句是如何在系统中执行的及可能遇到的问题

    欢迎来到 GreatSQL社区分享的MySQL技术文章,如有疑问或想学习的内容,可以在下方评论区留言,看到后会进行解答 SQL语句大家并不陌生,但某种程度上来看,我们只是知道了这条语句是什么功能,它可 ...

  4. 浅谈UML中类之间的五种关系及其在代码中的表现形式

    本文转载:http://www.cnblogs.com/DebugLZQ/archive/2013/05/13/3066715.html 什么是类? 将某类东西归纳在一起,可以成为一个类. 类有很多种 ...

  5. 好代码是管出来的——浅谈.Net Core的代码管理方法与落地(更新中...)

    软件开发的目的是在规定成本和时间前提下,开发出具有适用性.有效性.可修改性.可靠性.可理解性.可维护性.可重用性.可移植性.可追踪性.可互操作性和满足用户需求的软件产品. 而对于整个开发过程来说,开发 ...

  6. 浅谈C++三种传参方式

    浅谈C++三种传参方式 C++给函数传参中,主要有三种方式:分别是值传递.指针传递和引用传递. 下面通过讲解和实例来说明三种方式的区别. 值传递 我们都知道,在函数定义括号中的参数是形参,是给函数内专 ...

  7. 浅谈Android系统进程间通信(IPC)机制Binder中的Server和Client获得Service Manager接口之路

    文章转载至CSDN社区罗升阳的安卓之旅,原文地址:http://blog.csdn.net/luoshengyang/article/details/6627260 在前面一篇文章浅谈Service ...

  8. 浅谈Java线程安全

    浅谈Java线程安全 - - 2019-04-25    17:37:28 线程安全 Java中的线程安全 按照线程安全的安全程序由强至弱来排序,我们可以将Java语言中各种操作共享的数据分为以下五类 ...

  9. 浅谈android代码保护技术_ 加固

    浅谈android代码保护技术_加固 导语 我们知道Android中的反编译工作越来越让人操作熟练,我们辛苦的开发出一个apk,结果被人反编译了,那心情真心不舒服.虽然我们混淆,做到native层,但 ...

随机推荐

  1. DNS 服务器无法正常解析时,可以尝试这样!

    DNS 服务器无法正常解析时,可以尝试这样! ========================================================================联通:12 ...

  2. Centos 7搭建Gitlab服务器超详细Centos 7搭建Gitlab服务器超详细(搭建成功)

    一. 安装并配置必要的依赖关系在CentOS系统上安装所需的依赖:ssh,防火墙,postfix(用于邮件通知) ,wget,以下这些命令也会打开系统防火墙中的HTTP和SSH端口访问. 注意:用户不 ...

  3. IIS8.5中的强制https直接修改web.config文件和顶级域名跳转www和过滤子目录不强制跳转

    亲测可用 <?xml version="1.0" encoding="UTF-8"?> <configuration> <syst ...

  4. python程序设计基础(程序设计基础方法)

    python初学者程序练习题 注:练习题涉及到range()函数的使用方法和python绘制,后面会单独发篇解释说明. 1.字符串拼接.接收用户输入的两个字符串,将它们组合后输出 str1=input ...

  5. 使用CodeFirst创建数据库

    1.新建一个类库项目 2.右键管理Nuget程序包,搜索EntityFramework.然后安装 3.新建一个类,然后引用 using System.Data.Entity; 然后写类初始化方法(ba ...

  6. 2-Consul简介

    Consul 是什么 Consul 是一个支持多数据中心分布式高可用的服务发现和配置共享的服务软件,由 HashiCorp 公司用 Go 语言开发, 基于 Mozilla Public License ...

  7. mac下搭建Apache服务器环境

    mac下自带了一个Apache服务环境,所以不需要另外去下载,直接配置就好了. 一.启动Apache服务 在终端下输入 sudo apachectl start , 启动Apache服务.在浏览器输入 ...

  8. Python【day 9】函数入门2

    本节内容:1. 什么是函数2. 函数定义, 函数名, 函数体以及函数的调⽤3. 函数的返回值4. 函数的参数 一.什么是函数 我们可以先去定义一个事情或者功能(接口.服务.函数.功能). 等到需要的时 ...

  9. Web Api 模型绑定 一

    [https://docs.microsoft.com/zh-cn/aspnet/core/web-api/?view=aspnetcore-2.2]1.模型绑定 简单模型绑定针对简单类型(如stri ...

  10. 【转载】C#使用typeof运算符获取对象变量的具体类型Type

    在C#的实际类型操作过程中,有时候需要通过typeof方法获取对象的类型对应的Type变量即具体类型,例如在获取DataTable中某一列的具体数据类型的时候,我们就会用到typeof方法来获取具体的 ...