正题

题目链接:https://www.luogu.com.cn/problem/CF891E


题目大意

nnn个数字的一个序列aia_iai​,每次随机选择一个让它减去一。然后贡献加上所有其他aia_iai​的乘积。

执行kkk次,求贡献答案。

1≤n≤5000,0≤ai,k≤1091\leq n\leq 5000,0\leq a_i,k\leq 10^91≤n≤5000,0≤ai​,k≤109


解题思路

这个操作很麻烦,但是其实答案就是开始时所有aia_iai​的乘积减去结束时所有aia_iai​的乘积。

设第iii个数减去了bib_ibi​次,就是求∏i=1nai−∏i=1n(ai−bi)\prod_{i=1}^na_i-\prod_{i=1}^n(a_i-b_i)∏i=1n​ai​−∏i=1n​(ai​−bi​)的期望,考虑怎么求后面那个东西。

推一下式子不难发现对于一组bib_ibi​对期望的贡献就是
1nkk!∏i=1n(bi!)∏i=1n(ai−bi)\frac{1}{n^k}\frac{k!}{\prod_{i=1}^n(b_i!)}\prod_{i=1}^n(a_i-b_i)nk1​∏i=1n​(bi​!)k!​i=1∏n​(ai​−bi​)
(总方案×可重排方案×贡献)
把∏i=1n(bi!)\prod_{i=1}^n(b_i!)∏i=1n​(bi​!)丢进去会有很神奇的结果
⇒k!nk∏i=1nai−bibi!\Rightarrow \frac{k!}{n^k}\prod_{i=1}^n\frac{a_i-b_i}{b_i!}⇒nkk!​i=1∏n​bi​!ai​−bi​​
因为每种方案都要求和,后面那个东西显然可以生成函数搞,设
fz^(x)=∑i=0n(az−i)xii!=∑i=0∞azxii!−∑i=0∞ixii!\widehat{f_z}(x)=\sum_{i=0}^n(a_z-i)\frac{x^i}{i!}=\sum_{i=0}^\infty a_z\frac{x^i}{i!}-\sum_{i=0}^\infty i\frac{x^i}{i!}fz​​(x)=i=0∑n​(az​−i)i!xi​=i=0∑∞​az​i!xi​−i=0∑∞​ii!xi​

好像就搞不动了,前面那个是azexa_ze^{x}az​ex,其实后面那个把iii抵消掉阶乘就是xexxe^{x}xex
fz(x)^=(az−x)ex\widehat{f_z(x)}=(a_z-x)e^xfz​(x)​=(az​−x)ex
然后F^=∏i=1nfz^\widehat{F}=\prod_{i=1}^n\widehat{f_z}F=∏i=1n​fz​​,可以暴力O(n2)O(n^2)O(n2)乘出∏i=1n(az−x)\prod_{i=1}^n(a_z-x)∏i=1n​(az​−x)这部分,记为∑i=0∞cixi\sum_{i=0}^{\infty}c_ix^i∑i=0∞​ci​xi。

然后展开后面的exe^xex就有
F(x)^[xk]=∑i=0kcink−i(k−i)!\widehat{F(x)}[x^k]=\sum_{i=0}^kc_{i}\frac{n^{k-i}}{(k-i)!}F(x)​[xk]=i=0∑k​ci​(k−i)!nk−i​
然后
ans=∑i=0kcik!(k−i)!nians=\sum_{i=0}^kc_{i}\frac{k!}{(k-i)!n^i}ans=i=0∑k​ci​(k−i)!nik!​

就好了,时间复杂度O(n2)O(n^2)O(n2)


code

#include<cstdio>
#include<cstring>
#include<algorithm>
#define ll long long
using namespace std;
const ll N=5100,P=1e9+7;
ll n,k,f[N],ans;
ll power(ll x,ll b){ll ans=1;while(b){if(b&1)ans=ans*x%P;x=x*x%P;b>>=1;}return ans;
}
signed main()
{scanf("%lld%lld",&n,&k);f[0]=1;for(ll i=1;i<=n;i++){ll x;scanf("%lld",&x);for(ll j=i;j>=1;j--)f[j]=(f[j]*x-f[j-1]+P)%P;f[0]=f[0]*x%P;}ll tt=1,inv=power(n,P-2);for(ll i=0;i<=n;i++){ans=(ans+f[i]*tt%P)%P;tt=tt*inv%P*(k-i)%P;}printf("%lld\n",(f[0]-ans+P)%P);return 0;
}

CF891E-Lust【EGF】相关推荐

  1. POJ3734-Blocks【EGF】

    正题 题目链接:http://poj.org/problem?id=3734 题目大意 用思种颜色给nnn个格子染色,要求前两种颜色出现偶数次,求方案. 1≤T≤100,1≤n≤1091\leq T\ ...

  2. P2012-拯救世界2【EGF】

    正题 题目链接:https://www.luogu.com.cn/problem/P2012 题目大意 121212种东西排列成长度为nnn的序列,要求前四种出现奇数次,后四种出现偶数次,求方案.TT ...

  3. 【笔记】Polygon mesh processing 读书笔记(3)

    文章目录 3. 微分几何 曲线 弧长 曲率 表面 表面的参数化表示 度量性质 **第一基本形式** **各向异性** 表面曲率 **Euler定理** **曲率张量** **固有几何(Intrinsi ...

  4. 【视频】KMEANS均值聚类和层次聚类:R语言分析生活幸福指数可视化|数据分享...

    原文链接:http://tecdat.cn/?p=24198 聚类是将总体或数据点划分为多个组的任务,以使同一组中的数据点与同一组中的其他数据点更相似,而与其他组中的数据点不相似.它基本上是基于它们之 ...

  5. 【CentOS】利用Kubeadm部署Kubernetes (K8s)

    [CentOS]利用Kubeadm部署Kubernetes (K8s)[阅读时间:约10分钟] 一.概述 二.系统环境&项目介绍 1.系统环境 2.项目的任务要求 三.具体实验流程 1 系统准 ...

  6. 【Spring】框架简介

    [Spring]框架简介 Spring是什么 Spring是分层的Java SE/EE应用full-stack轻量级开源框架,以IOC(Inverse Of Control:反转控制)和AOP(Asp ...

  7. 【C#】类——里式转换

    类是由面对对象程序设计中产生的,在面向结构的程序设计例如C语言中是没有类这个概念的!C语言中有传值调用和传址调用的两种方式!在c语言中,主方法调用方法,通过传递参数等完成一些操作,其中比较常用的的数据 ...

  8. 【C#】Out与ref是干什么的?

    关于return: 1.最后没有写 return 语句的话,表示程序正常退出 2.不需要返回值时,存在return的作用 例子 void main() {return; //return退出该程序的作 ...

  9. 【软件工程】RUP与软件开发5大模型

    软件开发的5大模型 1.瀑布模型:按照人的思维一步一步的开发下去,如果需求分析得当,每个阶段顺利,结果还不错! 2.快速原型模型:后来人们发现,自己不可能一下子就把所有的需求搞清楚,总是在开发的过程中 ...

最新文章

  1. Python安装模块出错(No module named setuptools)解决方法
  2. CTFshow php特性 web144
  3. Graph Normalization (GN):为图神经网络学习一个有效的图归一化
  4. 数字图像处理资料集锦(Python、C++、Matlab)
  5. ESMap+Html5+SpringBoot+FastDFS实现导航导购App
  6. [gdoi2018 day1]小学生图论题【分治NTT】
  7. tg3269c网卡驱动linux,TP-Link3269C网卡驱动官方版
  8. 学 Python 最大的 1 个误区,看看你中招了吗?
  9. emlog博客主题价值358元lu1.3模板
  10. postgres 把一个表的值转成另一个表的字段名_Postgres索引那些事
  11. 在线民宿满意度测评项目[开源]
  12. LOJ2319「NOIP2017」列队
  13. 中兴力维动环监控接线图_肖东晖:动环是基本点 视频监控是增长点
  14. 在windows下安装pyLint,对python进行语法检查
  15. 虚幻蓝图数据传递_数据产品的战略蓝图
  16. udp ue4 通讯_UE4 UDP通信
  17. 关于IO throttle
  18. R语言安装ggcor包
  19. Shopee开店前必看:精品店铺运营五步法则
  20. 前端面试 100 题:能搞懂80%的请把简历给我

热门文章

  1. java 正则匹配引号_java 正则 贪婪匹配 匹配sql语句中的引号内容
  2. ksweb如何安装php5.6_Android端的服务器容器 KSWEB PHP+MySQL环境搭建及应用
  3. devexpress 中的checkboxlist怎么设置间距_HTML中怎么设置h1的字体样式你知道吗?关于设置h1标签的样式详解
  4. 实现贝叶斯分类器_机器学习实战项目-朴素贝叶斯
  5. html5 控制鼠标移动,HTML5 Canvas随鼠标移动的引力粒子群
  6. java并发之synchronized实现原理及其优化
  7. C++ 学习之旅(16)——虚函数与纯虚函数virtual
  8. [Java基础]字符串中的编码解码问题
  9. C++泛型编程实现平衡二叉搜索树AVL
  10. [蓝桥杯2018初赛]星期一-日期计算