牛逼题

calc by smallbasic

前言

拜谢smallbasic, 出的神题, 故写题解以记之。

题解

考虑各个数都在各自的范围内随机取值, 并且可以是实数, 这就很困难。 我们可以将其拆开, 得:

X=xi,Y=(xi)

(X+Y)k=i=0k(ki)XiYki

从而把期望套上去则有:

E((X+Y)k)=E(i=0k(ki)XiYki)=i=0k(ki)E(Xi)E(Yki)

因为完全随机, 所以小数和整数个随个的, 所以期望可以拆开。

E(Xj)=E((xi)j)

这个东西我们尝试DP, dpi,j 就是考虑前 ixE(Xij)。 我们把这个式子拆开搞。

E(Xij)=E((Xi1+xi)j)=E(t=0j(jt)Xi1txijt)=t=0j(jt)E(Xi1t)E(xijt)=t=0j(jt)dpi1,tE(xijt)

因为 xi 是独立的, 随机的, 可以搬出来。

现在就要算 E(xij) 这个东西, 我们可以根据定义算, 就是 E(xij)=wjP(w)=t=liri1tjrili

这个东西要快速算 O(k) 可以用拉插。

然后就剩下小数 E(((xi))j) 了。

同样的我们用定义式计算, E(((xi))j)=wjP(w)

这个东西我们只能转化, 令 si=j=0ixj, ti=(si)。 我们发现 si=si1+1 等价于 ti<ti1。 这一步非常的妙。

由于 ti 仍然是在 [0,1) 完全随机, 那么我们就可以将问题转化成 ((xi))= 我随机生成的 t 序列的相邻逆序对个数。 可以发现 ti 在实数域内完全随机, 两个数相同是不可能事件, 也就转化成 t 序列互不相同, 也每个数出现概率相同, 那么我们就可以根据相对大小把它映射成一个排列。

所以我们就转化成了随机生成一个排列, 里面的相邻逆序对个数就是 ((xi))

于是就可以设计DP。

比较难设计的是我们不知道放在哪里会产生什么贡献, 所以多设计一维就是已经考虑的排列中有多少相邻逆序对, 并且我们从小到大的插数。

那么就会得到转移方程:

dpi,j=dpi1,j(j+1)+dpi1,j1(ij)

posted @   qqrj  阅读(18)  评论(1编辑  收藏  举报
相关博文:
阅读排行:
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 如何调用 DeepSeek 的自然语言处理 API 接口并集成到在线客服系统
· 【译】Visual Studio 中新的强大生产力特性
· 2025年我用 Compose 写了一个 Todo App
点击右上角即可分享
微信分享提示