思路

第二类斯特林数和组合数推式子的题目

题目要求\(\sum_{i=1}^n \left(\begin{matrix}n \\ i \end{matrix} \right) i^k\)

一个性质

第二类斯特林数有这样的性质

\[n^k=\sum_{i=0}^n \left\{\begin{matrix}k \\ i \end{matrix} \right\}i!\left(\begin{matrix}n \\ i \end{matrix} \right)
\]

就是相当于枚举取哪i个可区分的盒子,再把k个球放进去,方案数总和就等于每个球都任意放的方案数

推式子

因为\(i=0\)时,后面的贡献是0,所以不妨变为\(\sum_{i=0}^n \left(\begin{matrix}n \\ i \end{matrix} \right) i^k\)

然后代入性质,得到

\[\begin{align}&\sum_{i=0}^n \left( \begin{matrix}n\\i\end{matrix}\right)i^k \\ =&\sum_{i=0}^n \left( \begin{matrix}n\\i\end{matrix}\right)\sum_{j=0}^i \left\{ \begin{matrix}k\\j\end{matrix}\right\}j!\left( \begin{matrix}i\\j\end{matrix}\right) \\=&\sum_{i=0}^n \left( \begin{matrix}n\\i\end{matrix}\right)\sum_{j=0}^i \left\{ \begin{matrix}k\\j\end{matrix}\right\}\frac{i!}{(n-j)!}\\=&n!\sum_{i=0}^n \frac{1}{(n-i)!}\sum_{j=0}^i \left\{ \begin{matrix}k\\j\end{matrix}\right\}\frac{1}{(n-j)!}\\=&n!\sum_{i=0}^n \sum_{j=0}^i \left\{ \begin{matrix}k\\j\end{matrix}\right\}\frac{1}{(n-i)!(n-j)!}\\=&n!\sum_{j=0}^n\left\{ \begin{matrix}k\\j\end{matrix}\right\} \sum_{i=j}^n\left( \begin{matrix}n-i\\n-j\end{matrix}\right) \frac{1}{(n-j)!} \\=&n!\sum_{i=0}^n \sum_{j=0}^i \left\{ \begin{matrix}k\\j\end{matrix}\right\}\frac{1}{(n-i)!(n-j)!}\\=&\sum_{j=0}^n\frac{n!}{(n-j)!}\left\{ \begin{matrix}k\\j\end{matrix}\right\} \sum_{i=j}^n\left( \begin{matrix}n-i\\n-j\end{matrix}\right)\\=&\sum_{j=0}^n\frac{n!}{(n-j)!}\left\{ \begin{matrix}k\\j\end{matrix}\right\} \sum_{i=0}^n\left( \begin{matrix}n-i\\n-j\end{matrix}\right) \\=&\sum_{j=0}^n\frac{n!}{(n-j)!}\left\{ \begin{matrix}k\\j\end{matrix}\right\}2^{n-j}\\=&\sum_{j=0}^k\frac{n!}{(n-j)!}\left\{ \begin{matrix}k\\j\end{matrix}\right\}2^{n-j}\end{align}
\]

然后\(O(k^2)\)的处理就好了

代码

不知道为什么n,k不能声明到S函数的上方

#include <cstdio>
#include <algorithm>
#include <cstring>
#define int long long
using namespace std;
const int MOD = 1000000007;
int s[5010][5010]={0};
bool vis[5010][5010]={0};
int my_pow(int a,int b){
int ans=1;
while(b){
if(b&1)
ans=(1LL*ans*a)%MOD;
a=(1LL*a*a)%MOD;
b>>=1;
}
return ans;
}
int S(int n,int k){
// printf("n=%lld k=%lld\n",n,k);
if(vis[n][k])
return s[n][k];
vis[n][k]=true;
if(n==0&&k==0)
return s[n][k]=1;
else if(n==0||k==0)
return s[n][k]=0;
return s[n][k]=(S(n-1,k-1)%MOD+k*S(n-1,k)%MOD)%MOD;
}
int n,k;
signed main(){
scanf("%lld %lld",&n,&k);
// printf("%lld %lld\n",n,k);
int ans=0;
int mid=1;
for(int i=0;i<=min(k,n);i++){
ans=(ans+mid*S(k,i)%MOD*my_pow(2,n-i)%MOD)%MOD;
mid=(mid*(n-i))%MOD;
}
printf("%lld\n",ans);
return 0;
}

CF932E Team Work的更多相关文章

  1. [CF932E]Team Work & [BZOJ5093]图的价值

    CF题面 题意:求\(\sum_{i=0}^{n}\binom{n}{i}i^k\) \(n\le10^9,k\le5000\) 模\(10^9+7\) BZOJ题面 题意:求\(n*2^{\frac ...

  2. CF932E Team Work(第二类斯特林数)

    题目 CF932E Team Work 前置:斯特林数\(\Longrightarrow\)点这里 做法 \[\begin{aligned}\\ &\sum\limits_{i=1}^n C_ ...

  3. [题解] CF932E Team Work

    CF932E Team Work 你现在手里有\(n\)个人,你要选出若干个人来搞事情(不能不选),其中选择\(x\)个人出来的代价是\(x^k\),问所有方案的代价总和. 数据范围:\(1\le n ...

  4. cf932E. Team Work(第二类斯特灵数 组合数)

    题意 题目链接 Sol 这篇题解写的非常详细 首先要知道第二类斯特灵数的一个性质 \[m^n = \sum_{i = 0}^m C_{n}^i S(n, i) i!\] 证明可以考虑组合意义:\(m^ ...

  5. CF932E Team Work(第二类斯特林数)

    传送门:CF原网 洛谷 题意:给定 $n,k$,求 $\sum\limits^n_{i=1}\dbinom{n}{i}i^k\bmod(10^9+7)$. $1\le n\le 10^9,1\le k ...

  6. CF932E Team Work——第二类斯特林数

    题解 n太大,而k比较小,可以O(k^2)做 想方设法争取把有关n的循环变成O(1)的式子 考虑用公式: 来替换i^k 原始的组合数C(n,i)一项,考虑能否和后面的系数分离开来,直接变成2^n处理. ...

  7. 【学术篇】CF932E Team Work && bzoj5093 图的价值

    两个题的传送门 对于CF这道题, 分别考虑每种可能的集合大小, 每个大小为\(k\)的集合数量有\(\binom nk\)个, 所以最后的答案就是 \[\sum_{i=0}^n\binom{n}{i} ...

  8. WC2019 填坑记

    2019年1月8日 1.Luogu P2147 [SDOI2008]洞穴勘测 (LCT模板题&LCT学习) 2019年1月9日 2.LuoguP3203 [HNOI2010]弹飞绵羊  (LC ...

  9. FFT/NTT复习笔记&多项式&生成函数学习笔记Ⅱ

    因为垃圾电脑太卡了就重开了一个... 前传:多项式Ⅰ u1s1 我预感还会有Ⅲ 多项式基础操作: 例题: 26. CF438E The Child and Binary Tree 感觉这题作为第一题还 ...

随机推荐

  1. arch 将 普通用户添加到 docker 组

    如果还没有 docker group 就添加一个: sudo groupadd docker 如果你想用你的使用者帳戶(非root帳戶)來使用Docker,把你的帳戶加到Docker的群組中 sudo ...

  2. 浅谈编码Base64、Hex、UTF-8、Unicode、GBK等

    网络上大多精彩的回答,该随笔用作自我总结: 首先计算机只认得二进制,0和1,所以我们现在看到的字都是经过二进制数据编码后的:计算机能针对0和1的组合做很多事情,这些规则都是人定义的:然后有了字节的概念 ...

  3. Spring-Boot之Redis基础

    Spring-Boot之Redis基础 准备 Redis下载地址:github.com/MSOpenTech/redis/releases Redis数据库的默认端口号是 6379 开启Redis服务 ...

  4. MySQL数据查询

    数据查询语言DQL select [all | distinct] 字段或表达式列表 [from子句] [where子句] [group by子句] [having子句] [order by子句] [ ...

  5. Oracle的基本查询知识

    基本语法 SELECT [DISTINCT] {*, column [alias],...} FROM table;参数说明SELECT 标识出所需的数据列.函数.常量和表达式.Distinct 删除 ...

  6. Caused by: java.lang.ClassNotFoundException: Could not load requested class :XXX.XXX.XXX 异常处理

    在ssh整合中:出现的异常 Exception sending context initialized event to listener instance of class org.springfr ...

  7. js 第二课

    =赋值 ==比较 ===绝对比较 &&且 ||  或 !取反 a?1:0 a=ture a?1:0 function LeyBc() { var a={d:11,b:22,c:&quo ...

  8. 关于vue执行打包后,如何在本地浏览问题

    最近一个人在捣鼓vue,写完项目后发现在npm run dev下可以正常访问,bulid之后却一片空白,查看console出现许多Failed to load resource: net::ERR_F ...

  9. 2018-2019-2 20165330《网络对抗技术》Exp5 MSF基础应用

    目录 基础问题 相关知识 实验目的 实验内容 实验步骤 离实战还缺些什么技术或步骤? 实验总结与体会 实验目的 本实践目标是掌握metasploit的基本应用方式,重点常用的三种攻击方式的思路 返回目 ...

  10. ubuntu linux修改文件所属用户(owner属主)和组(groud属组、用户组)

    使用chown命令可以修改文件或目录所属的用户: 命令格式:sudo chown 用户 目录或文件名 例如:sudo chown -R griduser /home/dir1  (把home目录下的d ...