博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Codeforces Round #446 Div1 E
阅读量:4623 次
发布时间:2019-06-09

本文共 1657 字,大约阅读时间需要 5 分钟。

题目大意

有n个数,进行k轮操作:随机一个i,让\(a_i\)减1,然后ans加上\(\Pi_{j\neq i}a_i\)

求ans的期望。

分析

发现,造成的伤害就是原来的ai的积减去k轮操作后的ai的积(其实我在看题解前根本没发现)。

题目就变成了求k轮操作后的ai的积的期望。
设ai经过了k轮操作减去了bi
\[E(\Pi_{i=1}^{n}(a_i-b_i))=\dfrac{1}{n^k}\sum_{\sum_{i=1}^{n}b_i=k}\Pi_{i=1}^{n}(a_i-b_i)(a_i-b_i)C_{k}^{b_1}C_{k-b_1}^{b_2}C_{k-b_1-b_2}^{b_3}...\]
\[=\dfrac{1}{n^k}\sum_{\sum_{i=1}^{n}b_i=k}\Pi_{i=1}^{n}(a_i-b_i)(a_i-b_i)\dfrac{k!}{\Pi_{i=1}^{n}b_i!}\]
考虑如何求
\[\sum_{\sum_{i=1}^{n}b_i=k}\Pi_{i=1}^{n}(a_i-b_i)(a_i-b_i)\dfrac{1}{\Pi_{i=1}^{n}b_i!}\]
设生成函数
\[F_i(x)=\sum_{j=0}^{\infty}\dfrac{a_i-j}{j!}x^j=\sum_{j=0}^{\infty}\dfrac{a_i}{j!}x^j-\sum_{j=0}^{\infty}\dfrac{1}{(j-1)!}x^j=(a_i-x)e^x\]
于是就
\[=\Pi_{i=1}^{n}F_i(x)=e^{nx}\Pi_{i=1}^{n}(a_i-x)\]
我们就要求出\(e^{nx}\Pi_{i=1}^{n}(a_i-x)\)的第k项的系数
\(\Pi_{i=1}^{n}(a_i-x)\)就可以用分治FFT来求。
然后对于\(\Pi_{i=1}^{n}(a_i-x)\)第i项乘上\(e^{nx}\)第k-i项加起来就是\(e^{nx}\Pi_{i=1}^{n}(a_i-x)\)的第k项的系数了。

#include 
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
const int inf=2147483647;const long long mo=998244353;const int N=400005;using namespace std;long long f[20][N],W[N];int n,m;long long ans,a[N],ny;long long poww(long long x,long long y){ long long s=1; for(;y;y>>=1,x=x*x%mo) if(y&1) s=s*x%mo; return s;}void NTT(long long *f,int fn,int z){ for(int i=0,p=0;i
>1;(p^=j)
>=1); } for(int i=2;i<=fn;i<<=1) { int half=i>>1,pe=fn/i; for(int j=0;j
>1,fn; for(fn=1;fn<=r-l+2;fn<<=1); dc(deep+1,l,mid); for(int i=0;i
=1) val=val*(m-i)%mo; } printf("%lld\n",(mo-ans+mo)%mo);}

转载于:https://www.cnblogs.com/chen1352/p/9099523.html

你可能感兴趣的文章
【自动化__持续集成】___java___水仙花
查看>>
实验任务一
查看>>
【转】【金蝶K3Cloud】 在插件中调用工作流
查看>>
数据库实验课笔记20190509
查看>>
HDU1131_卡特兰数算二叉树个数
查看>>
TortoiseSVN安装攻略和使用教程(详细)
查看>>
git 提示 Please move or remove them before you can merge 解决办法
查看>>
oracle Redhat64 安装
查看>>
UOJ #271 炸铁路
查看>>
T-SQL自定义函数ConvertSecondsToTime
查看>>
获取数据库中所有触发器
查看>>
存储过程接收JSON格式数据
查看>>
Linux下C编程入门(4)
查看>>
标准C程序设计七---42
查看>>
Git学习笔记
查看>>
Vim查找替换及正则表达式的使用
查看>>
hiberbnate 缓存策略概述
查看>>
python学习day25 接口类 抽象类 多态 封装
查看>>
同一场景下多个图层之间的调用
查看>>
【4OpenCV】OpenCV和RTSP的综合研究
查看>>