$n \leq 5000$的数列,$k \leq 1e9$次操作,每次随机选一个数-1,然后把其他数的积加入答案。问最后答案期望,$mod \ \ 1e9+7$。

略微观察可以发现答案=初始数列的积-最终数列的积。所以就是求最终数列的积的期望。证明的话,可以归纳法,

$新答案=(k次操作后的数列-(k+1)次操作后的数列)+(原数列-k次操作后的数列)$

$=原数列-(k+1)次操作后的数列$。

接下来就求最终数列的积了。$b_i$--第$i$个数减少的次数,这里要枚举所有$b_i$,然后$E$表示最终数列积的期望,$E=\sum_{\sum_{i=1}^nb_i=k}\frac{\frac{k!}{\prod_{1}^{n}b_i}}{n^k}\prod_{i=1}^{n}(a_i-b_i)=\frac{k!}{n^k} \sum_{\sum_{i=1}^n b_i=k} \frac{a_i-b_i}{b_i!}$

$\sum b_i=k$的条件容易让人联想到:多个多项式乘积的第$k$项系数。那就把$\frac{k!}{n^k}$先不理了,转生成函数:

$F(x)=\prod_{i=1}^{n}\sum_{j=0}^{\infty}\frac{a_i-j}{j!}x^j$

$=\prod_{i=1}^n(\sum_{j=0}^{\infty}\frac{a_i*x^j}{j!}-\sum_{j=1}^{\infty}\frac{x*x^{j-1}}{(j-1)!})$

$=\prod_{i=1}^{n}(a_i-x)e^x$

$=e^{nx}\prod_{i=1}^{n}(a_i-x)$

非常好。现求它的第$k$项系数。后面那坨由于$n$不大直接$n^2$dp一下即可。($f(i,j)$--前$i$个括号里有$j$个选了常数项)设其第$i$项系数$c_i$。

前面$e^{nx}$直接泰勒展开。

然后两个多项式相乘,就得到$_{[x^k]}F(x)=\sum_{i=0}^{n}c_i\frac{n^{k-i}}{(k-i)!}$

然后再乘上之前丢掉的$\frac{k!}{n^k}$,得到$E=\sum_{i=0}^{n}c_i\frac{k^{\underline{i}}}{n^i}$。搞定。

*Codeforces891E. Lust的更多相关文章

  1. 【CF891E】Lust 生成函数

    [CF891E]Lust 题意:给你一个长度为n的序列$a_i$,对这个序列进行k次操作,每次随机选择一个1到n的数x,令$res+=\prod\limits_{i!=x}a_i$(一开始res=0) ...

  2. Seven Deadly Sins: Gluttony, Greed, Sloth, Wrath, Pride, Lust, and Envy.

    Seven Deadly Sins: Gluttony, Greed, Sloth, Wrath, Pride, Lust, and Envy.七宗罪:暴食.贪婪.懒惰.暴怒.傲慢.色欲.妒忌.

  3. CF891E Lust

    传送门 题目大意 你有 \(n\) 个数 \(a_1,a_2...a_n\) 要进行 \(k\) 次操作 每次随机选择一个数 \(x\),使得答案加上 \(\prod_{i \neq x}a_i\) ...

  4. CF891E Lust 生成函数

    传送门 设在某一次操作之后的\(a\)数组变为了\(a'\)数组,那么\(\prod\limits_{i \neq x} a_i = \prod a_i - \prod a_i'\).那么就不难发现我 ...

  5. Codeforces 891E - Lust(生成函数)

    Codeforces 题面传送门 & 洛谷题面传送门 NaCly_Fish:<简单>的生成函数题 然鹅我连第一步都没 observe 出来 首先注意到如果我们按题意模拟那肯定是不方 ...

  6. Bible

    001 Love your neighbor as yourself.         要爱人如己.--<旧·利>19:18      002 Resentment kills a foo ...

  7. Base64编码简介

      基本概念   Base64这个术语最初是在“MIME内容传输编码规范”中提出的.Base64不是一种加密算法,虽然编码后的字符串看起来有点加密的赶脚.它实际上是一种“二进制到文本”的编码方法,它能 ...

  8. nullcon HackIM 2016 -- Programming Question 2

    Your simple good Deeds can save you but your GREED can kill you. This has happened before. This gree ...

  9. BZOJ1695 : [Usaco2007 Demo]Walk the Talk

    观察单词表可以发现: 对于长度为3的单词,前两个字母相同的单词不超过7个 对于长度为4的单词,前两个字母相同的单词不超过35个 于是首先$O(26*26*nm)$预处理出 s1[x][i][j]表示( ...

随机推荐

  1. 历史管理 onhashchange

    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/ ...

  2. 移动端:active伪类无效的解决方法

    :active伪类常用于设定点击状态下或其他被激活状态下一个链接的样式.最常用于锚点<a href="#">这种情况,一般主流浏览器下也支持其他元素,如button等. ...

  3. Python基础篇 -- 字符串

    字符串 字符串是不可变的对象,任何操作对原字符串是不会有任何影响的. 索引和切片 索引 . 索引就是下标, 下标从 0 开始, 使用[] 来获取数据 s1 = "0123456" ...

  4. rsync文档

    rsync文档 1.rsync filter过滤 参考http://share.blog.51cto.com/278008/567578/

  5. ios之UIPickView

    以下为控制器代码,主要用到的是UIPickerView 主要步骤:新建一个Single View Application 然后,如上图所示,拖进去一个UILabel Title设置为导航,再拖进去一个 ...

  6. Linux 永久修改主机名hostname

    前言: 由于最近用3台机器,经常切换导致有容易区别的需求. 故想修改主机名. 实验环境:Ubuntu 17 教程: 1. 使用hostname 命令先临时修改 sudo hostname your_n ...

  7. Vue.js—单元测试

    Vue.js--测试 这里采用的是Vue官方工具(Vue-CLI)搭建出来的项目,在这个搭建工具中推荐的两种测试分别是 端到端的测试 E2E 单元测试 Unit Test 端到端的测试(E2E) E2 ...

  8. js解析器

    1>js的预解析 找var function 参数等 所有的变量,在正式运行代码前,都提前赋了一个值:未定义 所有的函数,在正式运行代码前,都是整个函数块. 遇到重名的:只留一个 如果变量与函数 ...

  9. Web框架之Django_08 重要组件(form组件、cookie和session组件)

    摘要: form组件 cookie组件 session组件 一.form组件 form介绍我们之前在html页面中利用form表单向后端提交数据时候,都需要对用户的输入进行校验,比如校验用户是否输入正 ...

  10. u-boot顶层目录config.mk分析

    1. 设置obj与src ifneq ($(OBJTREE),$(SRCTREE)) ifeq ($(CURDIR),$(SRCTREE)) dir := else dir := $(subst $( ...