CF932E Team Work

你现在手里有\(n\)个人,你要选出若干个人来搞事情(不能不选),其中选择\(x\)个人出来的代价是\(x^k\),问所有方案的代价总和。

数据范围:\(1\le n \le 10^9,1\le k \le 5000\)

英语不好qwq...题目应该是这个意思吧

一句话题意:求

\[\sum\limits_{i=1}^n \binom{n}{i}i^k
\]

哇...这东西怎么算啊...

注意到\(k\)很小,把\(i^k\)用第二类斯特林数代替一下

\[\sum\limits_{i=1}^n \binom{n}{i}\sum\limits_{j=0}^k \begin{Bmatrix}k\\j\end{Bmatrix}\binom{i}{j}j!
\]

交换求和顺序

\[\sum\limits_{j=0}^k \begin{Bmatrix}k\\j\end{Bmatrix}j! \sum\limits_{i=1}^n \binom{n}{i}\binom{i}{j}
\]

后面俩组合数...咋整?写一下

\[\binom{n}{i}\binom{i}{j} = \frac{n!}{i!(n-i)!} \times \frac{i!}{j!(i-j)!}
\]

后面的\(j!\)和前面抵消了,\(i!\)也消没了 Nice!

\[\sum\limits_{j=0}^k \begin{Bmatrix}k\\j\end{Bmatrix}\sum\limits_{i=1}^n \frac{n!}{(n-i)!(i-j)!}
\]

注意到分母上和为\(n-j\),我们像把他搞成组合数的形式,分子分母同时乘\((n-j)!\)

\[\frac{n!}{(n-i)!(i-j)!} = \frac{(n-j)!}{(n-i)!(i-j)!} \times \frac{n!}{(n-j)!}
\]

可以知道\(\frac{(n-j)!}{(n-i)!(i-j)!} = \binom{n-j}{n-i}\),再把第二个因子提到外面柿子变成了

\[\sum\limits_{j=0}^k \begin{Bmatrix}k\\j\end{Bmatrix}\frac{n!}{(n-j)!}\sum\limits_{i=1}^n \binom{n-j}{n-i}
\]

注意到\(k \ge 1\),\(\begin{Bmatrix}k\\0\end{Bmatrix}=0\),就可以直接对第二个\(\sum\)组合数求和,得到

\[\sum\limits_{j=0}^k \begin{Bmatrix}k\\j\end{Bmatrix}n^{\underline{j}}2^{n-j}
\]

大力\(O(k^2)\)推第二类斯特林数,预处理下降幂就好了。

#include <bits/stdc++.h>
using namespace std;
const int P=1e9+7,N=5010;
inline int fpow(int x,int y)
{
int ret=1; for(x%=P;y;y>>=1,x=1ll*x*x%P)
if(y&1) ret=1ll*ret*x%P;
return ret;
}
inline int add(int x,int y){return (x+=y)>=P?x-P:x;}
inline int sub(int x,int y){return (x-=y)<0?x+P:x;}
int S[N][N],dwn[N],n,k;
int main()
{
scanf("%d%d",&n,&k);
dwn[0]=1; for(int i=1;i<=k;i++) dwn[i]=1ll*dwn[i-1]*(n-i+1)%P;
S[0][0]=1; for(int i=1;i<=k;i++)
for(int j=1;j<=i;j++)
S[i][j]=add(S[i-1][j-1],1ll*j*S[i-1][j]%P);
int ans=0,pw2=fpow(2,n),i2=fpow(2,P-2);
for(int j=0;j<=k;j++,pw2=1ll*pw2*i2%P)
ans=add(ans,1ll*S[k][j]*dwn[j]%P*pw2%P);
printf("%d\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(第二类斯特灵数 组合数)

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

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

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

  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

    思路 第二类斯特林数和组合数推式子的题目 题目要求\(\sum_{i=1}^n \left(\begin{matrix}n \\ i \end{matrix} \right) i^k\) 一个性质 第 ...

  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. SessionAttributes注解

    SessionAttributes注解: a.该注解只能应用在类上: b.该注解用于将Map.ModelMap.Model或ModelAndView中的数据暂存到HttpSession中以使其可以在多 ...

  2. DeepLearning算法文章

    算法源码: learn_dl : https://github.com/hanbt/learn_dl rnn-from-scratch : https://github.com/pangolulu/r ...

  3. Linux 创建网卡子接口

    创建网卡子接口,添加IP别名 ifconfig eth0:0  2.2.2.2/24 或 ip addr add 2.2.2.2/24 dev eth0 label eth0:0 清除网卡子接口,删除 ...

  4. springboot发送email邮件

    添加依赖 <dependency> <groupId>org.springframework.boot</groupId> <artifactId>sp ...

  5. 「POI2017」Flappy Bird

    传送门 Luogu团队题 解题思路 数据范围不小啊,离散也不行,DP不了,考虑贪心+递推. 我们递推出小鸟可以到达的高度区间. 我们发现,小鸟最好的情况就是在当前基础上,从最下方一直往下飞,或者从最上 ...

  6. rapid-generator JAVA代码生成器

    有感于马上要做个比较大的业务系统,想到那无止境的增删改查.粘贴复制,顿时脑后升起一阵凉风.于是想到个找或者写一个Java代码的生成器,这样在正常开发进度下,也能余下更多的时间去做些别的事情. 闲话少说 ...

  7. 8张图片掌握JS原型链

  8. POJ 1979 Red and Black 四方向棋盘搜索

    Red and Black Time Limit: 1000MS   Memory Limit: 30000K Total Submissions: 50913   Accepted: 27001 D ...

  9. Binary Tree和Binary Search Tree

    Binary TreeDefinition: at most two children node. Binary Tree Example: 10 ==root /      \ 13        ...

  10. P1092 最好吃的月饼

    1092 最好吃的月饼 (20分)   月饼是久负盛名的中国传统糕点之一,自唐朝以来,已经发展出几百品种. 若想评比出一种“最好吃”的月饼,那势必在吃货界引发一场腥风血雨…… 在这里我们用数字说话,给 ...