【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并不好转移,于是 ...
随机推荐
- [转]kaldi特征和模型空间转换
转:http://blog.csdn.net/shmilyforyq/article/details/76807431 博主话:这篇博客是对kaldi官网中Feature and model-spac ...
- asp.net对接拼多多
asp.net对接拼多多视频地址:https://www.bilibili.com/video/av43512047/?p=7
- Turtle库学习笔记
一.Turtle库是Python语言中一个很流行的绘制图像的函数库,想象一个小乌龟,在一个横轴为x.纵轴为y的坐标系原点,(0,0)位置开始,它根据一组函数指令的控制,在这个平面坐标系中移动,从而在它 ...
- LabVIEW(十一):条件结构的巧用
一.LabVIEW中条件结构使用起来并不是那么简便,主要体现在两点: 1.由隧道的产生引起的一些问题.(当箭头停留在隧道处时不显示为“自动索引隧道”,所以此隧道非彼隧道) 2.由多层结构判断引起的不易 ...
- 从app上传图片到php,再上传到java后端服务器的方法一条龙服务
在现在的网络开发中,上传图片类的需求实在是太普通不过了,但是对于怎么样做到上传图片,对于刚开始建立项目的时候,还是有点不知所措的.也许有幸,我们做的项目是之前已经有人写过类似的用例了,那么我们只需要依 ...
- live-server 快速搭建服务
原因: 在2018年3月2日偶然情况下听到一个大佬提起“live-server”这东西, 我就研究一下,用过的人才知道live-server多么方便... 功能: 当启动live-server服务的文 ...
- postgresql-无序uuid tps测试
# postgresql-无序uuid tps测试 ## 无序uuid对数据库的影响 由于最近在做超大表的性能测试,在该过程中发现了无序uuid做主键对表插入性能有一定影响.结合实际情况发现当表的数据 ...
- JavaScript中的 this全面解析
上一章我们排除了一些对this的错误认识和知道了this是在调用函数时被绑定的,完全取决于函数的调用位置.先介绍两个概念:调用位置和调用栈. 调用栈:就是为了到达当前执行位置所调用的所有函数. 调用位 ...
- python之线程(threading)
线程是属于进程的,一个进程可能包含多个线程 至于线程和进程在使用时哪个更好,只能看使用的场景了 话不多说,看下线程模块(threading)的使用方法: #导入模块 import threading, ...
- Log4Net使用详解2
首先说明一点的是,log4net解决的问题是提供一个记录日志的框架,它提供了向多种目标写入的实现,比如利用log4net可以方便地将日志信息记录到文件.控制台.Windows事件日志和数据库(包括MS ...