CF891E-Lust【EGF】
正题
题目链接: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=1nai−∏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∏nbi!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∑∞azi!xi−i=0∑∞ii!xi
好像就搞不动了,前面那个是azexa_ze^{x}azex,其实后面那个把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=1nfz,可以暴力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∞cixi。
然后展开后面的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∑kci(k−i)!nk−i
然后
ans=∑i=0kcik!(k−i)!nians=\sum_{i=0}^kc_{i}\frac{k!}{(k-i)!n^i}ans=i=0∑kci(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】相关推荐
- POJ3734-Blocks【EGF】
正题 题目链接:http://poj.org/problem?id=3734 题目大意 用思种颜色给nnn个格子染色,要求前两种颜色出现偶数次,求方案. 1≤T≤100,1≤n≤1091\leq T\ ...
- P2012-拯救世界2【EGF】
正题 题目链接:https://www.luogu.com.cn/problem/P2012 题目大意 121212种东西排列成长度为nnn的序列,要求前四种出现奇数次,后四种出现偶数次,求方案.TT ...
- 【笔记】Polygon mesh processing 读书笔记(3)
文章目录 3. 微分几何 曲线 弧长 曲率 表面 表面的参数化表示 度量性质 **第一基本形式** **各向异性** 表面曲率 **Euler定理** **曲率张量** **固有几何(Intrinsi ...
- 【视频】KMEANS均值聚类和层次聚类:R语言分析生活幸福指数可视化|数据分享...
原文链接:http://tecdat.cn/?p=24198 聚类是将总体或数据点划分为多个组的任务,以使同一组中的数据点与同一组中的其他数据点更相似,而与其他组中的数据点不相似.它基本上是基于它们之 ...
- 【CentOS】利用Kubeadm部署Kubernetes (K8s)
[CentOS]利用Kubeadm部署Kubernetes (K8s)[阅读时间:约10分钟] 一.概述 二.系统环境&项目介绍 1.系统环境 2.项目的任务要求 三.具体实验流程 1 系统准 ...
- 【Spring】框架简介
[Spring]框架简介 Spring是什么 Spring是分层的Java SE/EE应用full-stack轻量级开源框架,以IOC(Inverse Of Control:反转控制)和AOP(Asp ...
- 【C#】类——里式转换
类是由面对对象程序设计中产生的,在面向结构的程序设计例如C语言中是没有类这个概念的!C语言中有传值调用和传址调用的两种方式!在c语言中,主方法调用方法,通过传递参数等完成一些操作,其中比较常用的的数据 ...
- 【C#】Out与ref是干什么的?
关于return: 1.最后没有写 return 语句的话,表示程序正常退出 2.不需要返回值时,存在return的作用 例子 void main() {return; //return退出该程序的作 ...
- 【软件工程】RUP与软件开发5大模型
软件开发的5大模型 1.瀑布模型:按照人的思维一步一步的开发下去,如果需求分析得当,每个阶段顺利,结果还不错! 2.快速原型模型:后来人们发现,自己不可能一下子就把所有的需求搞清楚,总是在开发的过程中 ...
最新文章
- Python安装模块出错(No module named setuptools)解决方法
- CTFshow php特性 web144
- Graph Normalization (GN):为图神经网络学习一个有效的图归一化
- 数字图像处理资料集锦(Python、C++、Matlab)
- ESMap+Html5+SpringBoot+FastDFS实现导航导购App
- [gdoi2018 day1]小学生图论题【分治NTT】
- tg3269c网卡驱动linux,TP-Link3269C网卡驱动官方版
- 学 Python 最大的 1 个误区,看看你中招了吗?
- emlog博客主题价值358元lu1.3模板
- postgres 把一个表的值转成另一个表的字段名_Postgres索引那些事
- 在线民宿满意度测评项目[开源]
- LOJ2319「NOIP2017」列队
- 中兴力维动环监控接线图_肖东晖:动环是基本点 视频监控是增长点
- 在windows下安装pyLint,对python进行语法检查
- 虚幻蓝图数据传递_数据产品的战略蓝图
- udp ue4 通讯_UE4 UDP通信
- 关于IO throttle
- R语言安装ggcor包
- Shopee开店前必看:精品店铺运营五步法则
- 前端面试 100 题:能搞懂80%的请把简历给我
热门文章
- java 正则匹配引号_java 正则 贪婪匹配 匹配sql语句中的引号内容
- ksweb如何安装php5.6_Android端的服务器容器 KSWEB PHP+MySQL环境搭建及应用
- devexpress 中的checkboxlist怎么设置间距_HTML中怎么设置h1的字体样式你知道吗?关于设置h1标签的样式详解
- 实现贝叶斯分类器_机器学习实战项目-朴素贝叶斯
- html5 控制鼠标移动,HTML5 Canvas随鼠标移动的引力粒子群
- java并发之synchronized实现原理及其优化
- C++ 学习之旅(16)——虚函数与纯虚函数virtual
- [Java基础]字符串中的编码解码问题
- C++泛型编程实现平衡二叉搜索树AVL
- [蓝桥杯2018初赛]星期一-日期计算