【CF932E】Team Work(第二类斯特林数)
【CF932E】Team Work(第二类斯特林数)
题面
洛谷
CF
求\(\sum_{i=1}^nC_{n}^i*i^k\)
题解
寒假的时候被带飞,这题被带着写了一遍。事实上并不难,我们来颓柿子。
首先回忆一下第二类斯特林数关于整数幂的计算公式:
\]
\(m^n\)理解为把\(n\)个不同的球放到\(m\)个不同的盒子中去。那么我们枚举有几个盒子非空,用第二类斯特林数乘阶乘计算放置的方案数,最后求和就是结果。
那么直接把\(i^k\)展开
\]
把组合数直接拆开
\]
化简之后的结果就很好看了。
\]
\(n\)的范围太大,而\(k\)的范围很小,所以考虑把斯特林数提出来放到外层循环
\]
因为第二类斯特林数\(S(k,j)\)如果\(j>k\)那么结果就是\(0\),所以可以不需要考虑。那么式子可以化简$$\sum_{j=0}{min(n,k)}S(k,j)\sum_{i=j}n\frac{n!}{(n-i)!}*\frac{1}{(i-j)!}$$
后面的阶乘孤零零的,给他配点东西就好看了。
\]
\]
\]
因为\(k\)只有\(5000\),所以\(i\)的起始位置最多只有\(5000\)个,那么直接\(O(k)\)考虑计算即可。
斯特林数暴力\(O(k^2)\)预处理,总的复杂度\(O(k^2)\)。
#include<iostream>
#include<cstdio>
using namespace std;
#define MOD 1000000007
#define inv2 500000004
#define MAX 5050
int fpow(int a,int b){int s=1;while(b){if(b&1)s=1ll*s*a%MOD;a=1ll*a*a%MOD;b>>=1;}return s;}
int n,k,S[MAX][MAX],ans;
int main()
{
scanf("%d%d",&n,&k);S[0][0]=1;
for(int i=1;i<=k;++i)
for(int j=1;j<=k;++j)
S[i][j]=(S[i-1][j-1]+1ll*S[i-1][j]*j)%MOD;
for(int j=0,pw=fpow(2,n),nw=1;j<=min(n,k);pw=1ll*pw*inv2%MOD,nw=1ll*nw*(n-j)%MOD,++j)
ans=(ans+1ll*S[k][j]*nw%MOD*pw%MOD)%MOD;
printf("%d\n",ans);
return 0;
}
【CF932E】Team Work(第二类斯特林数)的更多相关文章
- CF932E Team Work(第二类斯特林数)
题目 CF932E Team Work 前置:斯特林数\(\Longrightarrow\)点这里 做法 \[\begin{aligned}\\ &\sum\limits_{i=1}^n C_ ...
- CF932E Team Work——第二类斯特林数
题解 n太大,而k比较小,可以O(k^2)做 想方设法争取把有关n的循环变成O(1)的式子 考虑用公式: 来替换i^k 原始的组合数C(n,i)一项,考虑能否和后面的系数分离开来,直接变成2^n处理. ...
- Codeforces 932 E Team Work ( 第二类斯特林数、下降阶乘幂、组合数学 )
题目链接 题意 : 其实就是要求 分析 : 先暴力将次方通过第二类斯特林数转化成下降幂 ( 套路?) 然后再一步步化简.使得最外层和 N 有关的 ∑ 划掉 这里有个技巧就是 将组合数的表达式放到一边. ...
- 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 ...
- 【cf932E】E. Team Work(第二类斯特林数)
传送门 题意: 求\(\displaystyle \sum_{i=0}^n{n\choose i}i^k,n\leq 10^9,k\leq 5000\). 思路: 将\(i^k\)用第二类斯特林数展开 ...
- Gym - 101147G G - The Galactic Olympics —— 组合数学 - 第二类斯特林数
题目链接:http://codeforces.com/gym/101147/problem/G G. The Galactic Olympics time limit per test 2.0 s m ...
- 【BZOJ5093】图的价值(第二类斯特林数,组合数学,NTT)
[BZOJ5093]图的价值(第二类斯特林数,组合数学,NTT) 题面 BZOJ 题解 单独考虑每一个点的贡献: 因为不知道它连了几条边,所以枚举一下 \[\sum_{i=0}^{n-1}C_{n-1 ...
- 【BZOJ4555】求和(第二类斯特林数,组合数学,NTT)
[BZOJ4555]求和(第二类斯特林数,组合数学,NTT) 题面 BZOJ 题解 推推柿子 \[\sum_{i=0}^n\sum_{j=0}^iS(i,j)·j!·2^j\] \[=\sum_{i= ...
- HDU - 4625 JZPTREE(第二类斯特林数+树DP)
https://vjudge.net/problem/HDU-4625 题意 给出一颗树,边权为1,对于每个结点u,求sigma(dist(u,v)^k). 分析 贴个官方题解 n^k并不好转移,于是 ...
随机推荐
- MFC 不同窗体之间变量调用
应用场景: (1)主对话框包含一个Tab控件,Tab控件用来切换显示若干子对话框,子对话框类的成员需要互相访问. (2)或者程序中包含多个类,各类之间需要互相访问. 方法1-定义指针成员变量: 详情参 ...
- linux下报错bash: service: command not found
在linux下操作的时候经常会遇到,bash: service: command not found这个错误,以前在网上找了,照着弄了,也没细看原因,今天又碰到这个问题,就顺便研究一下. 1.通常这种 ...
- Flask中的模板语言jinja2
jinja2介绍 jinja2是Flask作者开发的一个模板系统,起初是仿django模板的一个模板引擎,为Flask提供模板支持,由于其灵活,快速和安全等优点被广泛使用. jinja2的优点 jin ...
- vsftpd安装配置以及常见问题解决
vsftpd安装配置以及踩坑解决办法,Centos7 nginx已经配置成功了,但是使用http始终没办法访问到图片,那么你来对地方了(在文章末尾是原因) 配置nginx教程:http://blog. ...
- react-router V4中的url参数
概述 之前写过react在router中传递数据的2种方法,但是有些细节没有理清楚,现在补上,记录下来,供以后开发时参考,相信对其他人也有用. 参考资料:stackoverflow react rou ...
- C# 对密码等数据进行对称性加密解密
类: /// <summary> /// DESEncrypt加密解密算法. /// </summary> public class DESEncrypt { private ...
- Thread,ThreadPool,Task, 到async await 的基本使用方法和理解
很久以前的一个面试场景: 面试官:说说你对JavaScript闭包的理解吧? 我:嗯,平时都是前端工程师在写JS,我们一般只管写后端代码. 面试官:你是后端程序员啊,好吧,那问问你多线程编程的问题吧. ...
- Filebeat的Registry文件解读
你可能没有注意但很重要的filebeat小知识 Registry文件 Filebeat会将自己处理日志文件的进度信息写入到registry文件中,以保证filebeat在重启之后能够接着处理未处理过的 ...
- google 身份验证器
谷歌身份验证器原理 就是服务器与客户端算法相同
- Docker---Run命令
docker运行在一个独立的隔离的进程中. 当用户执行dockerrun,它将启动一个有着独立的文件系统,独立的网络和独立的进程树的进程. 基本的docker run命令的格式: docker run ...