资本(生成函数)

news/2024/11/19 7:44:15/文章来源:https://www.cnblogs.com/0shadow0/p/18433751

$\quad $ 其中 $n\le 1e3 $ 、$ m\le 1e9 $ 、 $ T\le 10 $。

$\quad $ 这是一个排列问题,所以我们可以考虑指数型生成函数,这里我们称 \(x ^n\) 的系数为 \(\frac{x ^n}{n!}\) 之前的系数,下文记作 \([x ^n]\)

$\quad $ 我们定义函数 \(f _{k}(x)=\sum _{n=0}^{k}\frac{x ^n}{n!}\) ,那么 \([x^n]\) 表示选其中 \(n\) 个数(可重复)且该数出现次数不超过 \(k\) 时的合法方案数。

$\quad $ 那么 \([x^n]e _{k}^{m}(x)\) 就表示在 \(m\) 个数中选出 \(n\) 个数(可重),使得每个选出的数出现次数都不超过 \(k\) 的方案数。

$\quad $ 那么 \([x^n]e_{k}^{m}(x)-[x^n]e _{k-1}^{m}(x)\) 就表示在 \(m\) 个数中选出 \(n\) 个数(可重),使得众数为 \(k\) 的方案数。

下文 \([x^n]\) 代指 \(x^n\) 之前的系数。

$\quad $ 答案就是:

\[n!\sum _{k=1}^{n}k([x^n]e ^{m}_{k}(x)-[x^n]e ^{m}_{k-1}(x)) \]

再化简一下:

\[n!(n[x^n]e ^{m}_{n}(x)-\sum _{k=1}^{n-1}[x^n]e ^{m} _{k}(x)) \]

$\quad $ 现在再考虑求出 \([x^n]e _{k}^{m}(x)\)

首先对 \(e ^m_{k}(x)\) 求导,这里用到了复合函数的求导,(简单写了,不是很严谨)即:

对于两个函数 \(f(x)、g(x)\) ,令 \(h(x)=f[g(x)]\) ,则 \(h'(x)=f'[g(x)] g'(x)\)

书上给的

如果 \(u=g(x)\) 在点 \(x\) 处可导,而 \(y=f(u)\) 在点 \(u=g(x)\) 处可导,那么复合函数 \(y=g[f(x)]\) 在点 \(x\) 处可导,且其导数为

\[\frac{dy}{dx}=f'(u)\cdot g'(x) \]

这里我们可以把 \(e ^m_{k}(x)\) 看做是 $f(x)=x^m $ 和 \(g(x)=e _{k}(x)\) 的复合函数

那么:

\[(e ^{m}_{k}(x))'=me ^{m-1}_{k}(x)e'_{k}(x) \]

现在看看 \(e'_{k}(x)\) ,因为 \(e _{k}(x)=\sum _{i=0}^{k}\frac{x^i}{i!}\) ,故 \(e'_{k}(x)=\sum _{i=1}^{k}\frac{x ^{i-1}}{(i-1)!}=\sum _{i=0}^{k-1}\frac{x^i}{i!}=e _{k}(x)-\frac{x^k}{k!}\)

所以:
\begin{aligned}
(e ^{m}_{k}(x))'&=me ^{m-1} _{k}(x) e' _{k} (x)\\
&=me ^{m-1} _{k}(x)(e _{k} ^{m}(x)-\frac{x ^k}{k!})\\
&=m e ^{m} _{k}(x)-\frac{mx ^k}{k!}e _{k} ^{m-1}(x)\\
\end{aligned}

那么对于其 \(n\) 次项系数,该等式仍然成立。

也就是:

\[[x^n](e ^{m}_{k}(x))'=[x^n]m e ^{m} _{k}(x)-\frac{mx ^k}{k!}[x ^{n-k}]e _{k} ^{m-1}(x) \]

此时设 \(e _{k} ^{m}(x)=\sum _{n=0}^{m}A(n,m)x^n\) ,那么可知 \([x^n](e ^{m}_{k}(x))' =(n+1)A(n+1,m)\)

于是:

\[(n+1)A(n+1,m)=mA(n,m)-\frac{m}{k!}A(n-k,m-1) \]

$\quad $ 再化成我们熟悉的递推式:

\[iA(i,j)=jA(i-1,j)-\frac{j}{k!}A(i-k-1,j-1) \]

$\quad $ 当 \(m=1\) 时,该式的值为 \(\frac{1}{n!}\)\(n=0\) 时,该式的值为 \(1\)\(n\le 0\) 时则为 \(0\)

然后愉快递推就好了,时间复杂度 \(O(n ^2 log n)\)

点击查看代码
#include<bits/stdc++.h>
#define int long long
const int N=1e3+10,p=1e9+7;
int fact[N],n,m,t,ny[N],nyp[N],k,f[N][N];
inline int qum(int a,int b){int ans=1;while(b){(b&1)&&(ans=ans*a%p);a=a*a%p;b>>=1;}return ans;
}
signed main(){// freopen("1.in","r",stdin);freopen("capital.in","r",stdin);freopen("capital.out","w",stdout);scanf("%lld",&t);fact[0]=1;for(int i=1;i<=1000;i=-~i)fact[i]=fact[i-1]*i%p;ny[1000]=qum(fact[1000],p-2);for(int i=999;i;i--)ny[i]=ny[i+1]*(i+1)%p;for(int i=1;i<=1000;i=-~i)nyp[i]=fact[i-1]*ny[i]%p;while(t--){scanf("%lld%lld",&n,&m);int ans=0;for(int i=1;i<=n+1;i++)f[0][i]=1;for(k=1;k<=n;k=-~k){f[k][1]=ny[k];int op=n/k+1,d=m-op;for(int i=1;i<=op;i=-~i){for(int j=1;j<=k;j=-~j){f[j][i]=nyp[j]*(i+d)%p*f[j-1][i]%p;}for(int j=k+1;j<=n;j++){f[j][i]=nyp[j]*(i+d)%p*(f[j-1][i]-ny[k]*f[j-k-1][i-1]%p+p)%p;}}ans=(k^n)?(ans+f[n][m-d])%p:(n*f[n][m-d]%p-ans+p)%p;}ans=ans*fact[n]%p;printf("%lld\n",ans);}
}

《唐完了》,5k一语惊醒梦中人。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/804220.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Axure解决列表项中触发内部元件交互的冲突问题

背景在绘制列表项中“更多”菜单按钮的时候,我想在我鼠标悬浮上去时会出现一个底色的效果 如下图:但我在做的过程中发现如果在一个组下勾选了"触发内部元件鼠标交互样式",那你鼠标还没放到"更多"按钮上就已经给触发了制作过程1、所需元件2、结构3、只需…

手把手教你建【货币】一题的网络流模型

现在已知如下问题,并告诉你这题可以用网络流来解决,你该怎么做,该怎么建出网络流的模型?一些前提: 显然可以发现绝不可能走横向向左的边,但可能走竖向向上的边(如下图) 那么图其实就是这样的:问从 \(s\) 到 \(t\) 的最小花费如果没有那 \(m\) 条限制,我们直接跑最短路…

人工智能教育技术学第二次作业

本节课我们学习了制作思维导图的工具,学习怎样运用软件制作思维导图,我们小组制作的思维导图是统计的知识点,通过思维导图我们将小学阶段学习到的有关于统计学的知识点都很好地总结出来。

C#(.NetCore)接入AD域用户的实现

很多公司电脑都是windows,而对用户的管理则很多采用AD域的形式来管理,本文简单的来介绍一下.NetCore中怎么接入AD域来实现登录等操作。首先,我这里使用的是.net6,其它版本类似。其次,这里假设你已经对AD域有了基本的了解,比如AD域所使用的LDAP、属性等,如果不了解先自行…

三,MyBatis-Plus 的各种查询的“超详细说明”,比如(等值查询,范围查询,模糊查询...)

三,MyBatis-Plus 的各种查询的“超详细说明”,比如(等值查询,范围查询,模糊查询...) @目录三,MyBatis-Plus 的各种查询的“超详细说明”,比如(等值查询,范围查询,模糊查询...)1. 条件构造器介绍2. 准备工作:3. 等值查询3.1 eq (条件筛选属性 = ?)3.2 allEq(满足多个条…

git 清除二进制文件的 changes 状态

问题:某个分支上修改了二进制文件,导致 changes 一直存在,切换到主分支也仍然存在,点击 Discard 也没用使用 git reset --hard 还原到初始状态,也不行,不过输出结果会给出错误信息Encountered 7 file(s) that should have been pointers, but werent:解决方法: 根据这个…

软件工程第一次结队作业

这个作业属于哪个课程 软件工程这个作业要求在哪里 作业要求这个作业的目标 需求分析与原型设计,初步实践软件开发合作学号 172209028合作伙伴 102202129林伟宏原型地址:墨刀原型在线展示体验 102202129 林伟宏 172209028伊晓 一、《构建之法》阅读成果 第3章 软件工程师的成…

混子生存指南

混子生存指南 目标:苟到毕业 实现方式:课程学分和论文课程学分论文(两部分。一篇发表到期刊的小论文,一篇硕士结业论文)论文规则:数据库检索工具(按照影响因子给里面的期刊排名,期刊进入需审核)(SCI(中科院分区5/20/50),EI,南核,北核等)--->期刊(CCF推荐国际的…

VulnStack-红日靶机二

红日靶机二 环境搭建 只需要把虚拟机的 host-only(仅主机)网卡改为 10.10.10.0 网段,如下配置把 NAT 网卡,改为 192.168.96.0 网段,如下首先恢复到 v1.3 快照让后点击放弃,放弃后再开机,用其他用户 .\de1ay:1qaz@WSX 凭证登陆,密码过期修改密码就登陆成功了 完成后开启…

MySQL 库、表的操作与使用

目录数据库的编码集与校验集表的基本结构库的操作(DDL)创建数据库带字符集创建带校验集创建查看数据库查看自己正在使用的是哪一个数据库显示创建语句删除数据库使用数据库查看当前使用的数据库数据库备份与还原备份还原查看数据库连接数表的操作(DDL)建表查看数据库中的表查看…

MiniMax、商汤科技、面壁智能、西湖心辰、声网都来了!RTE 大会「实时互动和大模型」专场开启报名

当大模型进化到 实时多模态 ,将诞生什么样的新场景和玩法?Voice AI 实现 human-like 的最后一步是什么?AI 视频爆炸增长,新一代编解码技术 将面临何种挑战?所有 AI Infra 都在探寻规格和性能的最佳平衡,如何构建高可用的云边端协同架构?AI 加持下,空间计算和新硬件 也迎…